TPTP Problem File: ITP166^1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : ITP166^1 : TPTP v8.2.0. Released v7.5.0.
% Domain   : Interactive Theorem Proving
% Problem  : Sledgehammer RelationalIncorrectness problem prob_274__5902014_1
% Version  : Especial.
% English  :

% Refs     : [BH+15] Blanchette et al. (2015), Mining the Archive of Formal
%          : [Des21] Desharnais (2021), Email to Geoff Sutcliffe
% Source   : [Des21]
% Names    : RelationalIncorrectness/prob_274__5902014_1 [Des21]

% Status   : Theorem
% Rating   : 0.20 v8.2.0, 0.23 v8.1.0, 0.27 v7.5.0
% Syntax   : Number of formulae    :  330 ( 125 unt; 108 typ;   0 def)
%            Number of atoms       :  601 ( 284 equ;   0 cnn)
%            Maximal formula atoms :   16 (   2 avg)
%            Number of connectives : 2463 (  74   ~;  17   |;  97   &;2079   @)
%                                         (   0 <=>; 196  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   24 (   8 avg)
%            Number of types       :   28 (  27 usr)
%            Number of type conns  :  742 ( 742   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   82 (  81 usr;   7 con; 0-6 aty)
%            Number of variables   :  897 (  98   ^; 747   !;  52   ?; 897   :)
% SPC      : TH0_THM_EQU_NAR

% Comments : This file was generated by Sledgehammer 2021-02-23 15:33:22.688
%------------------------------------------------------------------------------
% Could-be-implicit typings (27)
thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_Mt__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J_J,type,
    set_Pr1333062727ar_int: $tType ).

thf(ty_n_t__Product____Type__Oprod_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_Mt__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
    produc1346207591ar_int: $tType ).

thf(ty_n_t__Set__Oset_It__List__Olist_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J_J,type,
    set_li1762364675ar_int: $tType ).

thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__List__Olist_It__Typerep__Otyperep_J_Mt__List__Olist_It__Typerep__Otyperep_J_J_J,type,
    set_Pr446800905yperep: $tType ).

thf(ty_n_t__List__Olist_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
    list_P1741976099ar_int: $tType ).

thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
    set_Pr1148378109ar_int: $tType ).

thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__List__Olist_It__Nat__Onat_J_Mt__List__Olist_It__Nat__Onat_J_J_J,type,
    set_Pr1560408065st_nat: $tType ).

thf(ty_n_t__Product____Type__Oprod_It__List__Olist_It__Typerep__Otyperep_J_Mt__List__Olist_It__Typerep__Otyperep_J_J,type,
    produc490010537yperep: $tType ).

thf(ty_n_t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
    produc1260470173ar_int: $tType ).

thf(ty_n_t__Product____Type__Oprod_It__List__Olist_It__Nat__Onat_J_Mt__List__Olist_It__Nat__Onat_J_J,type,
    produc1699244961st_nat: $tType ).

thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__Typerep__Otyperep_Mt__Typerep__Otyperep_J_J,type,
    set_Pr1097818217yperep: $tType ).

thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J_J,type,
    set_Pr1986765409at_nat: $tType ).

thf(ty_n_t__Product____Type__Oprod_It__Typerep__Otyperep_Mt__Typerep__Otyperep_J,type,
    produc1788831497yperep: $tType ).

thf(ty_n_t__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J,type,
    product_prod_nat_nat: $tType ).

thf(ty_n_t__Set__Oset_It__List__Olist_It__Typerep__Otyperep_J_J,type,
    set_list_typerep: $tType ).

thf(ty_n_t__List__Olist_It__Typerep__Otyperep_J,type,
    list_typerep: $tType ).

thf(ty_n_t__Set__Oset_It__Typerep__Otyperep_J,type,
    set_typerep: $tType ).

thf(ty_n_t__List__Olist_It__String__Ochar_J,type,
    list_char: $tType ).

thf(ty_n_t__List__Olist_It__Nat__Onat_J,type,
    list_nat: $tType ).

thf(ty_n_t__Set__Oset_It__Nat__Onat_J,type,
    set_nat: $tType ).

thf(ty_n_t__Typerep__Otyperep,type,
    typerep: $tType ).

thf(ty_n_t__String__Oliteral,type,
    literal: $tType ).

thf(ty_n_t__BExp__Obexp,type,
    bexp: $tType ).

thf(ty_n_t__AExp__Oaexp,type,
    aexp: $tType ).

thf(ty_n_t__Nat__Onat,type,
    nat: $tType ).

thf(ty_n_t__Int__Oint,type,
    int: $tType ).

thf(ty_n_t__Com__Ocom,type,
    com: $tType ).

% Explicit typings (81)
thf(sy_c_BExp_Obval,type,
    bval: bexp > ( list_char > int ) > $o ).

thf(sy_c_BNF__Greatest__Fixpoint_OShift_001t__Typerep__Otyperep,type,
    bNF_Gr457912949yperep: set_list_typerep > typerep > set_list_typerep ).

thf(sy_c_BNF__Greatest__Fixpoint_OSucc_001t__Typerep__Otyperep,type,
    bNF_Gr1303086585yperep: set_list_typerep > list_typerep > set_typerep ).

thf(sy_c_BNF__Greatest__Fixpoint_Oimage2_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J,type,
    bNF_Gr202451329ar_int: set_Pr1148378109ar_int > ( produc1260470173ar_int > com ) > ( produc1260470173ar_int > list_char > int ) > set_Pr1148378109ar_int ).

thf(sy_c_BNF__Greatest__Fixpoint_Oimage2_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Nat__Onat_001t__Nat__Onat,type,
    bNF_Gr749752805at_nat: set_Pr1148378109ar_int > ( produc1260470173ar_int > nat ) > ( produc1260470173ar_int > nat ) > set_Pr1986765409at_nat ).

thf(sy_c_BNF__Greatest__Fixpoint_OrelImage_001t__Nat__Onat_001t__Nat__Onat,type,
    bNF_Gr1247133574at_nat: set_Pr1986765409at_nat > ( nat > nat ) > set_Pr1986765409at_nat ).

thf(sy_c_BNF__Greatest__Fixpoint_OrelInvImage_001t__Nat__Onat_001t__Nat__Onat,type,
    bNF_Gr808751971at_nat: set_nat > set_Pr1986765409at_nat > ( nat > nat ) > set_Pr1986765409at_nat ).

thf(sy_c_BNF__Greatest__Fixpoint_OrelInvImage_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Nat__Onat,type,
    bNF_Gr1143394412nt_nat: set_Pr1148378109ar_int > set_Pr1986765409at_nat > ( produc1260470173ar_int > nat ) > set_Pr1333062727ar_int ).

thf(sy_c_Big__Step_Obig__step,type,
    big_big_step: produc1260470173ar_int > ( list_char > int ) > $o ).

thf(sy_c_Com_Ocom_OAssign,type,
    assign: list_char > aexp > com ).

thf(sy_c_Com_Ocom_OIf,type,
    if: bexp > com > com > com ).

thf(sy_c_Com_Ocom_OSKIP,type,
    skip: com ).

thf(sy_c_Com_Ocom_OSeq,type,
    seq: com > com > com ).

thf(sy_c_Com_Ocom_OWhile,type,
    while: bexp > com > com ).

thf(sy_c_Com_Ocom_Osize__com,type,
    size_com: com > nat ).

thf(sy_c_Divides_Ounique__euclidean__semiring__numeral__class_Odivides__aux_001t__Nat__Onat,type,
    unique1592618082ux_nat: product_prod_nat_nat > $o ).

thf(sy_c_Groups_Oplus__class_Oplus_001t__Nat__Onat,type,
    plus_plus_nat: nat > nat > nat ).

thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat,type,
    zero_zero_nat: nat ).

thf(sy_c_List_Oappend_001t__Nat__Onat,type,
    append_nat: list_nat > list_nat > list_nat ).

thf(sy_c_List_Oappend_001t__Typerep__Otyperep,type,
    append_typerep: list_typerep > list_typerep > list_typerep ).

thf(sy_c_List_Ogen__length_001t__Typerep__Otyperep,type,
    gen_length_typerep: nat > list_typerep > nat ).

thf(sy_c_List_Olex_001t__Nat__Onat,type,
    lex_nat: set_Pr1986765409at_nat > set_Pr1560408065st_nat ).

thf(sy_c_List_Olex_001t__Typerep__Otyperep,type,
    lex_typerep: set_Pr1097818217yperep > set_Pr446800905yperep ).

thf(sy_c_List_Olexord_001t__Nat__Onat,type,
    lexord_nat: set_Pr1986765409at_nat > set_Pr1560408065st_nat ).

thf(sy_c_List_Olexord_001t__Typerep__Otyperep,type,
    lexord_typerep: set_Pr1097818217yperep > set_Pr446800905yperep ).

thf(sy_c_List_Olist_OCons_001t__Nat__Onat,type,
    cons_nat: nat > list_nat > list_nat ).

thf(sy_c_List_Olist_OCons_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
    cons_P1254790739ar_int: produc1260470173ar_int > list_P1741976099ar_int > list_P1741976099ar_int ).

thf(sy_c_List_Olist_OCons_001t__Typerep__Otyperep,type,
    cons_typerep: typerep > list_typerep > list_typerep ).

thf(sy_c_List_Olist_Osize__list_001t__Typerep__Otyperep,type,
    size_list_typerep: ( typerep > nat ) > list_typerep > nat ).

thf(sy_c_List_Olistrel1_001t__Nat__Onat,type,
    listrel1_nat: set_Pr1986765409at_nat > set_Pr1560408065st_nat ).

thf(sy_c_List_Olistrel1_001t__Typerep__Otyperep,type,
    listrel1_typerep: set_Pr1097818217yperep > set_Pr446800905yperep ).

thf(sy_c_List_Oset__Cons_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
    set_Co1954412371ar_int: set_Pr1148378109ar_int > set_li1762364675ar_int > set_li1762364675ar_int ).

thf(sy_c_List_Oset__Cons_001t__Typerep__Otyperep,type,
    set_Cons_typerep: set_typerep > set_list_typerep > set_list_typerep ).

thf(sy_c_Nat_OSuc,type,
    suc: nat > nat ).

thf(sy_c_Nat_Osize__class_Osize_001t__Com__Ocom,type,
    size_size_com: com > nat ).

thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__Nat__Onat_J,type,
    size_size_list_nat: list_nat > nat ).

thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__Typerep__Otyperep_J,type,
    size_s416147576yperep: list_typerep > nat ).

thf(sy_c_Nat_Osize__class_Osize_001t__Typerep__Otyperep,type,
    size_size_typerep: typerep > nat ).

thf(sy_c_Product__Type_OPair_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J,type,
    produc1193801173ar_int: com > ( list_char > int ) > produc1260470173ar_int ).

thf(sy_c_Product__Type_OPair_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J,type,
    produc1625736153st_nat: list_nat > list_nat > produc1699244961st_nat ).

thf(sy_c_Product__Type_OPair_001t__List__Olist_It__Typerep__Otyperep_J_001t__List__Olist_It__Typerep__Otyperep_J,type,
    produc1695567329yperep: list_typerep > list_typerep > produc490010537yperep ).

thf(sy_c_Product__Type_OPair_001t__Nat__Onat_001t__Nat__Onat,type,
    product_Pair_nat_nat: nat > nat > product_prod_nat_nat ).

thf(sy_c_Product__Type_OPair_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
    produc317451735ar_int: produc1260470173ar_int > produc1260470173ar_int > produc1346207591ar_int ).

thf(sy_c_Product__Type_OPair_001t__Typerep__Otyperep_001t__Typerep__Otyperep,type,
    produc2071514689yperep: typerep > typerep > produc1788831497yperep ).

thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oflip,type,
    relati186416454e_flip: ( ( list_char > int ) > ( list_char > int ) > $o ) > ( list_char > int ) > ( list_char > int ) > $o ).

thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oget__back_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J,type,
    relati23543761ar_int: ( ( list_char > int ) > ( list_char > int ) > $o ) > bexp > com > nat > ( list_char > int ) > ( list_char > int ) > $o ).

thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oir__hoare,type,
    relati2102071307_hoare: ( ( list_char > int ) > ( list_char > int ) > $o ) > com > com > ( ( list_char > int ) > ( list_char > int ) > $o ) > $o ).

thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oir__valid,type,
    relati775585786_valid: ( ( list_char > int ) > ( list_char > int ) > $o ) > com > com > ( ( list_char > int ) > ( list_char > int ) > $o ) > $o ).

thf(sy_c_Set_OCollect_001t__List__Olist_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
    collec672902542ar_int: ( list_P1741976099ar_int > $o ) > set_li1762364675ar_int ).

thf(sy_c_Set_OCollect_001t__List__Olist_It__Typerep__Otyperep_J,type,
    collect_list_typerep: ( list_typerep > $o ) > set_list_typerep ).

thf(sy_c_Set_OCollect_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
    collec770796680ar_int: ( produc1260470173ar_int > $o ) > set_Pr1148378109ar_int ).

thf(sy_c_Set_OCollect_001t__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J,type,
    collec7649004at_nat: ( product_prod_nat_nat > $o ) > set_Pr1986765409at_nat ).

thf(sy_c_Set_OCollect_001t__Product____Type__Oprod_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_Mt__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
    collec1834387154ar_int: ( produc1346207591ar_int > $o ) > set_Pr1333062727ar_int ).

thf(sy_c_Typerep_Otyperep_OTyperep,type,
    typerep2: literal > list_typerep > typerep ).

thf(sy_c_Typerep_Otyperep_Osize__typerep,type,
    size_typerep: typerep > nat ).

thf(sy_c_member_001t__List__Olist_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
    member2052091212ar_int: list_P1741976099ar_int > set_li1762364675ar_int > $o ).

thf(sy_c_member_001t__List__Olist_It__Typerep__Otyperep_J,type,
    member_list_typerep: list_typerep > set_list_typerep > $o ).

thf(sy_c_member_001t__Nat__Onat,type,
    member_nat: nat > set_nat > $o ).

thf(sy_c_member_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
    member92250950ar_int: produc1260470173ar_int > set_Pr1148378109ar_int > $o ).

thf(sy_c_member_001t__Product____Type__Oprod_It__List__Olist_It__Nat__Onat_J_Mt__List__Olist_It__Nat__Onat_J_J,type,
    member1926390090st_nat: produc1699244961st_nat > set_Pr1560408065st_nat > $o ).

thf(sy_c_member_001t__Product____Type__Oprod_It__List__Olist_It__Typerep__Otyperep_J_Mt__List__Olist_It__Typerep__Otyperep_J_J,type,
    member1812711762yperep: produc490010537yperep > set_Pr446800905yperep > $o ).

thf(sy_c_member_001t__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J,type,
    member701585322at_nat: product_prod_nat_nat > set_Pr1986765409at_nat > $o ).

thf(sy_c_member_001t__Product____Type__Oprod_It__Typerep__Otyperep_Mt__Typerep__Otyperep_J,type,
    member100911538yperep: produc1788831497yperep > set_Pr1097818217yperep > $o ).

thf(sy_c_member_001t__Typerep__Otyperep,type,
    member_typerep: typerep > set_typerep > $o ).

thf(sy_v_P,type,
    p: ( list_char > int ) > ( list_char > int ) > $o ).

thf(sy_v_Q,type,
    q: ( list_char > int ) > ( list_char > int ) > $o ).

thf(sy_v_b,type,
    b: bexp ).

thf(sy_v_c,type,
    c: com ).

thf(sy_v_c_H,type,
    c2: com ).

thf(sy_v_k,type,
    k: nat ).

thf(sy_v_ka____,type,
    ka: nat ).

thf(sy_v_s_H____,type,
    s: list_char > int ).

thf(sy_v_s_Ha____,type,
    s_a: list_char > int ).

thf(sy_v_s____,type,
    s2: list_char > int ).

thf(sy_v_sa____,type,
    sa: list_char > int ).

thf(sy_v_t_H____,type,
    t: list_char > int ).

thf(sy_v_t_Ha____,type,
    t_a: list_char > int ).

thf(sy_v_t____,type,
    t2: list_char > int ).

thf(sy_v_ta____,type,
    ta: list_char > int ).

thf(sy_v_u____,type,
    u: list_char > int ).

thf(sy_v_ua____,type,
    ua: list_char > int ).

% Relevant facts (221)
thf(fact_0_Suc_Oprems_I6_J,axiom,
    bval @ b @ sa ).

% Suc.prems(6)
thf(fact_1__092_060open_062bval_Ab_As_____092_060close_062,axiom,
    bval @ b @ s2 ).

% \<open>bval b s__\<close>
thf(fact_2_Suc_Oprems_I3_J,axiom,
    big_big_step @ ( produc1193801173ar_int @ c @ sa ) @ ta ).

% Suc.prems(3)
thf(fact_3_Suc_Oprems_I4_J,axiom,
    big_big_step @ ( produc1193801173ar_int @ c2 @ s_a ) @ t_a ).

% Suc.prems(4)
thf(fact_4_Suc_Oprems_I7_J,axiom,
    relati23543761ar_int @ p @ b @ c @ ( suc @ ka ) @ sa @ s_a ).

% Suc.prems(7)
thf(fact_5__092_060open_062_Ic_H_M_As_H_____J_A_092_060Rightarrow_062_At_H_____092_060close_062,axiom,
    big_big_step @ ( produc1193801173ar_int @ c2 @ s ) @ t ).

% \<open>(c', s'__) \<Rightarrow> t'__\<close>
thf(fact_6__092_060open_062_Ic_M_As_____J_A_092_060Rightarrow_062_At_____092_060close_062,axiom,
    big_big_step @ ( produc1193801173ar_int @ c @ s2 ) @ t2 ).

% \<open>(c, s__) \<Rightarrow> t__\<close>
thf(fact_7_Suc_Oprems_I5_J,axiom,
    q @ ua @ t_a ).

% Suc.prems(5)
thf(fact_8__092_060open_062get__back_AP_Ab_Ac_Ak_As_____As_H_____092_060close_062,axiom,
    relati23543761ar_int @ p @ b @ c @ k @ s2 @ s ).

% \<open>get_back P b c k s__ s'__\<close>
thf(fact_9_Suc_Oprems_I2_J,axiom,
    big_big_step @ ( produc1193801173ar_int @ ( while @ b @ c ) @ ta ) @ ua ).

% Suc.prems(2)
thf(fact_10__092_060open_062_IWHILE_Ab_ADO_Ac_M_At_____J_A_092_060Rightarrow_062_Au_____092_060close_062,axiom,
    big_big_step @ ( produc1193801173ar_int @ ( while @ b @ c ) @ t2 ) @ u ).

% \<open>(WHILE b DO c, t__) \<Rightarrow> u__\<close>
thf(fact_11_Suc_Oprems_I1_J,axiom,
    relati775585786_valid @ ( relati23543761ar_int @ p @ b @ c @ ( suc @ ka ) ) @ ( while @ b @ c ) @ c2 @ q ).

% Suc.prems(1)
thf(fact_12_nat_Oinject,axiom,
    ! [X2: nat,Y2: nat] :
      ( ( ( suc @ X2 )
        = ( suc @ Y2 ) )
      = ( X2 = Y2 ) ) ).

% nat.inject
thf(fact_13_old_Onat_Oinject,axiom,
    ! [Nat: nat,Nat2: nat] :
      ( ( ( suc @ Nat )
        = ( suc @ Nat2 ) )
      = ( Nat = Nat2 ) ) ).

% old.nat.inject
thf(fact_14_prod_Oinject,axiom,
    ! [X1: nat,X2: nat,Y1: nat,Y2: nat] :
      ( ( ( product_Pair_nat_nat @ X1 @ X2 )
        = ( product_Pair_nat_nat @ Y1 @ Y2 ) )
      = ( ( X1 = Y1 )
        & ( X2 = Y2 ) ) ) ).

% prod.inject
thf(fact_15_prod_Oinject,axiom,
    ! [X1: com,X2: list_char > int,Y1: com,Y2: list_char > int] :
      ( ( ( produc1193801173ar_int @ X1 @ X2 )
        = ( produc1193801173ar_int @ Y1 @ Y2 ) )
      = ( ( X1 = Y1 )
        & ( X2 = Y2 ) ) ) ).

% prod.inject
thf(fact_16_old_Oprod_Oinject,axiom,
    ! [A: nat,B: nat,A2: nat,B2: nat] :
      ( ( ( product_Pair_nat_nat @ A @ B )
        = ( product_Pair_nat_nat @ A2 @ B2 ) )
      = ( ( A = A2 )
        & ( B = B2 ) ) ) ).

% old.prod.inject
thf(fact_17_old_Oprod_Oinject,axiom,
    ! [A: com,B: list_char > int,A2: com,B2: list_char > int] :
      ( ( ( produc1193801173ar_int @ A @ B )
        = ( produc1193801173ar_int @ A2 @ B2 ) )
      = ( ( A = A2 )
        & ( B = B2 ) ) ) ).

% old.prod.inject
thf(fact_18_Suc_OIH,axiom,
    ! [T: list_char > int,U: list_char > int,S: list_char > int,S2: list_char > int,T2: list_char > int] :
      ( ( relati775585786_valid @ ( relati23543761ar_int @ p @ b @ c @ ka ) @ ( while @ b @ c ) @ c2 @ q )
     => ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ b @ c ) @ T ) @ U )
       => ( ( big_big_step @ ( produc1193801173ar_int @ c @ S ) @ T )
         => ( ( big_big_step @ ( produc1193801173ar_int @ c2 @ S2 ) @ T2 )
           => ( ( q @ U @ T2 )
             => ( ( bval @ b @ S )
               => ( ( relati23543761ar_int @ p @ b @ c @ ka @ S @ S2 )
                 => ? [S3: list_char > int,S4: list_char > int] :
                      ( ( relati23543761ar_int @ p @ b @ c @ ka @ S3 @ S4 )
                      & ( bval @ b @ S3 )
                      & ( big_big_step @ ( produc1193801173ar_int @ c @ S3 ) @ T )
                      & ( big_big_step @ ( produc1193801173ar_int @ c2 @ S4 ) @ T2 ) ) ) ) ) ) ) ) ) ).

% Suc.IH
thf(fact_19_sim__sym,axiom,
    ! [C: com,C2: com] :
      ( ( ! [S5: list_char > int,T3: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C @ S5 ) @ T3 )
            = ( big_big_step @ ( produc1193801173ar_int @ C2 @ S5 ) @ T3 ) ) )
      = ( ! [S5: list_char > int,T3: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C2 @ S5 ) @ T3 )
            = ( big_big_step @ ( produc1193801173ar_int @ C @ S5 ) @ T3 ) ) ) ) ).

% sim_sym
thf(fact_20_sim__refl,axiom,
    ! [C: com,S6: list_char > int,T4: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ C @ S6 ) @ T4 )
      = ( big_big_step @ ( produc1193801173ar_int @ C @ S6 ) @ T4 ) ) ).

% sim_refl
thf(fact_21__092_060open_062Q_Au_____At_H_____092_060close_062,axiom,
    q @ u @ t ).

% \<open>Q u__ t'__\<close>
thf(fact_22_disj__ir__valid,axiom,
    ! [P_1: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q_1: ( list_char > int ) > ( list_char > int ) > $o,P_2: ( list_char > int ) > ( list_char > int ) > $o,Q_2: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P_1 @ C @ C2 @ Q_1 )
     => ( ( relati775585786_valid @ P_2 @ C @ C2 @ Q_2 )
       => ( relati775585786_valid
          @ ^ [S5: list_char > int,S7: list_char > int] :
              ( ( P_1 @ S5 @ S7 )
              | ( P_2 @ S5 @ S7 ) )
          @ C
          @ C2
          @ ^ [T3: list_char > int,T5: list_char > int] :
              ( ( Q_1 @ T3 @ T5 )
              | ( Q_2 @ T3 @ T5 ) ) ) ) ) ).

% disj_ir_valid
thf(fact_23__092_060open_062ir__valid_A_Iget__back_AP_Ab_Ac_Ak_J_A_IWHILE_Ab_ADO_Ac_J_Ac_H_AQ_092_060close_062,axiom,
    relati775585786_valid @ ( relati23543761ar_int @ p @ b @ c @ k ) @ ( while @ b @ c ) @ c2 @ q ).

% \<open>ir_valid (get_back P b c k) (WHILE b DO c) c' Q\<close>
thf(fact_24_conseq__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,P2: ( list_char > int ) > ( list_char > int ) > $o,Q2: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ C @ C2 @ Q )
     => ( ! [S3: list_char > int,S4: list_char > int] :
            ( ( P @ S3 @ S4 )
           => ( P2 @ S3 @ S4 ) )
       => ( ! [S3: list_char > int,S4: list_char > int] :
              ( ( Q2 @ S3 @ S4 )
             => ( Q @ S3 @ S4 ) )
         => ( relati775585786_valid @ P2 @ C @ C2 @ Q2 ) ) ) ) ).

% conseq_ir_valid
thf(fact_25_ir__valid__get__back,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,K: nat,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ ( suc @ K ) ) @ ( while @ B @ C ) @ C2 @ Q )
     => ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ K ) @ ( while @ B @ C ) @ C2 @ Q ) ) ).

% ir_valid_get_back
thf(fact_26_sim__while__cong__aux,axiom,
    ! [B: bexp,C: com,S: list_char > int,T: list_char > int,C2: com] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S ) @ T )
     => ( ! [S3: list_char > int,T6: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C @ S3 ) @ T6 )
            = ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T6 ) )
       => ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C2 ) @ S ) @ T ) ) ) ).

% sim_while_cong_aux
thf(fact_27_sim__while__cong,axiom,
    ! [C: com,C2: com,B: bexp] :
      ( ! [S3: list_char > int,T6: list_char > int] :
          ( ( big_big_step @ ( produc1193801173ar_int @ C @ S3 ) @ T6 )
          = ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T6 ) )
     => ! [S6: list_char > int,T4: list_char > int] :
          ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S6 ) @ T4 )
          = ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C2 ) @ S6 ) @ T4 ) ) ) ).

% sim_while_cong
thf(fact_28_ir__valid__def,axiom,
    ( relati775585786_valid
    = ( ^ [P3: ( list_char > int ) > ( list_char > int ) > $o,C3: com,C4: com,Q3: ( list_char > int ) > ( list_char > int ) > $o] :
        ! [T3: list_char > int,T5: list_char > int] :
          ( ( Q3 @ T3 @ T5 )
         => ? [S5: list_char > int,S7: list_char > int] :
              ( ( P3 @ S5 @ S7 )
              & ( big_big_step @ ( produc1193801173ar_int @ C3 @ S5 ) @ T3 )
              & ( big_big_step @ ( produc1193801173ar_int @ C4 @ S7 ) @ T5 ) ) ) ) ) ).

% ir_valid_def
thf(fact_29_WhileFalse,axiom,
    ! [B: bexp,S: list_char > int,C: com] :
      ( ~ ( bval @ B @ S )
     => ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S ) @ S ) ) ).

% WhileFalse
thf(fact_30_WhileTrue,axiom,
    ! [B: bexp,S_1: list_char > int,C: com,S_2: list_char > int,S_3: list_char > int] :
      ( ( bval @ B @ S_1 )
     => ( ( big_big_step @ ( produc1193801173ar_int @ C @ S_1 ) @ S_2 )
       => ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S_2 ) @ S_3 )
         => ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S_1 ) @ S_3 ) ) ) ) ).

% WhileTrue
thf(fact_31_WhileE,axiom,
    ! [B: bexp,C: com,S: list_char > int,T: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S ) @ T )
     => ( ( ( T = S )
         => ( bval @ B @ S ) )
       => ~ ( ( bval @ B @ S )
           => ! [S_22: list_char > int] :
                ( ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ S_22 )
               => ~ ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S_22 ) @ T ) ) ) ) ) ).

% WhileE
thf(fact_32_old_Oprod_Oinducts,axiom,
    ! [P: product_prod_nat_nat > $o,Prod: product_prod_nat_nat] :
      ( ! [A3: nat,B3: nat] : ( P @ ( product_Pair_nat_nat @ A3 @ B3 ) )
     => ( P @ Prod ) ) ).

% old.prod.inducts
thf(fact_33_old_Oprod_Oinducts,axiom,
    ! [P: produc1260470173ar_int > $o,Prod: produc1260470173ar_int] :
      ( ! [A3: com,B3: list_char > int] : ( P @ ( produc1193801173ar_int @ A3 @ B3 ) )
     => ( P @ Prod ) ) ).

% old.prod.inducts
thf(fact_34_old_Oprod_Oexhaust,axiom,
    ! [Y: product_prod_nat_nat] :
      ~ ! [A3: nat,B3: nat] :
          ( Y
         != ( product_Pair_nat_nat @ A3 @ B3 ) ) ).

% old.prod.exhaust
thf(fact_35_old_Oprod_Oexhaust,axiom,
    ! [Y: produc1260470173ar_int] :
      ~ ! [A3: com,B3: list_char > int] :
          ( Y
         != ( produc1193801173ar_int @ A3 @ B3 ) ) ).

% old.prod.exhaust
thf(fact_36_Pair__inject,axiom,
    ! [A: nat,B: nat,A2: nat,B2: nat] :
      ( ( ( product_Pair_nat_nat @ A @ B )
        = ( product_Pair_nat_nat @ A2 @ B2 ) )
     => ~ ( ( A = A2 )
         => ( B != B2 ) ) ) ).

% Pair_inject
thf(fact_37_Pair__inject,axiom,
    ! [A: com,B: list_char > int,A2: com,B2: list_char > int] :
      ( ( ( produc1193801173ar_int @ A @ B )
        = ( produc1193801173ar_int @ A2 @ B2 ) )
     => ~ ( ( A = A2 )
         => ( B != B2 ) ) ) ).

% Pair_inject
thf(fact_38_prod__cases,axiom,
    ! [P: product_prod_nat_nat > $o,P4: product_prod_nat_nat] :
      ( ! [A3: nat,B3: nat] : ( P @ ( product_Pair_nat_nat @ A3 @ B3 ) )
     => ( P @ P4 ) ) ).

% prod_cases
thf(fact_39_prod__cases,axiom,
    ! [P: produc1260470173ar_int > $o,P4: produc1260470173ar_int] :
      ( ! [A3: com,B3: list_char > int] : ( P @ ( produc1193801173ar_int @ A3 @ B3 ) )
     => ( P @ P4 ) ) ).

% prod_cases
thf(fact_40_mem__Collect__eq,axiom,
    ! [A: produc1260470173ar_int,P: produc1260470173ar_int > $o] :
      ( ( member92250950ar_int @ A @ ( collec770796680ar_int @ P ) )
      = ( P @ A ) ) ).

% mem_Collect_eq
thf(fact_41_Collect__mem__eq,axiom,
    ! [A4: set_Pr1148378109ar_int] :
      ( ( collec770796680ar_int
        @ ^ [X: produc1260470173ar_int] : ( member92250950ar_int @ X @ A4 ) )
      = A4 ) ).

% Collect_mem_eq
thf(fact_42_surj__pair,axiom,
    ! [P4: product_prod_nat_nat] :
    ? [X3: nat,Y3: nat] :
      ( P4
      = ( product_Pair_nat_nat @ X3 @ Y3 ) ) ).

% surj_pair
thf(fact_43_surj__pair,axiom,
    ! [P4: produc1260470173ar_int] :
    ? [X3: com,Y3: list_char > int] :
      ( P4
      = ( produc1193801173ar_int @ X3 @ Y3 ) ) ).

% surj_pair
thf(fact_44_n__not__Suc__n,axiom,
    ! [N: nat] :
      ( N
     != ( suc @ N ) ) ).

% n_not_Suc_n
thf(fact_45_Suc__inject,axiom,
    ! [X4: nat,Y: nat] :
      ( ( ( suc @ X4 )
        = ( suc @ Y ) )
     => ( X4 = Y ) ) ).

% Suc_inject
thf(fact_46_big__step__determ,axiom,
    ! [C: com,S: list_char > int,T: list_char > int,U: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ T )
     => ( ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ U )
       => ( U = T ) ) ) ).

% big_step_determ
thf(fact_47_sim__trans,axiom,
    ! [C: com,C2: com,C5: com] :
      ( ! [S3: list_char > int,T6: list_char > int] :
          ( ( big_big_step @ ( produc1193801173ar_int @ C @ S3 ) @ T6 )
          = ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T6 ) )
     => ( ! [S3: list_char > int,T6: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T6 )
            = ( big_big_step @ ( produc1193801173ar_int @ C5 @ S3 ) @ T6 ) )
       => ! [S6: list_char > int,T4: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C @ S6 ) @ T4 )
            = ( big_big_step @ ( produc1193801173ar_int @ C5 @ S6 ) @ T4 ) ) ) ) ).

% sim_trans
thf(fact_48_com_Oinject_I4_J,axiom,
    ! [X51: bexp,X52: com,Y51: bexp,Y52: com] :
      ( ( ( while @ X51 @ X52 )
        = ( while @ Y51 @ Y52 ) )
      = ( ( X51 = Y51 )
        & ( X52 = Y52 ) ) ) ).

% com.inject(4)
thf(fact_49_While__False__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C: com] :
      ( ( relati775585786_valid
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ~ ( bval @ B @ S5 ) )
        @ skip
        @ C2
        @ Q )
     => ( relati775585786_valid @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).

% While_False_ir_valid
thf(fact_50_While__True__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ( bval @ B @ S5 ) )
        @ ( seq @ C @ ( while @ B @ C ) )
        @ C2
        @ Q )
     => ( relati775585786_valid @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).

% While_True_ir_valid
thf(fact_51_get__back_Osimps_I2_J,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,N: nat] :
      ( ( relati23543761ar_int @ P @ B @ C @ ( suc @ N ) )
      = ( ^ [T3: list_char > int,T5: list_char > int] :
          ? [S5: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C @ S5 ) @ T3 )
            & ( bval @ B @ S5 )
            & ( relati23543761ar_int @ P @ B @ C @ N @ S5 @ T5 ) ) ) ) ).

% get_back.simps(2)
thf(fact_52_Skip__ir__valid,axiom,
    ! [Q: ( list_char > int ) > ( list_char > int ) > $o,P: ( list_char > int ) > ( list_char > int ) > $o,C2: com] :
      ( ! [T6: list_char > int,T7: list_char > int] :
          ( ( Q @ T6 @ T7 )
         => ? [S8: list_char > int] :
              ( ( P @ T6 @ S8 )
              & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S8 ) @ T7 ) ) )
     => ( relati775585786_valid @ P @ skip @ C2 @ Q ) ) ).

% Skip_ir_valid
thf(fact_53_While__backwards__frontier__ir__valid_H,axiom,
    ! [P: nat > ( list_char > int ) > ( list_char > int ) > $o,K: nat,B: bexp,C: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C2: com,T: list_char > int,T2: list_char > int] :
      ( ! [N2: nat,T6: list_char > int,T7: list_char > int] :
          ( ( P @ ( plus_plus_nat @ K @ ( suc @ N2 ) ) @ T6 @ T7 )
         => ? [S6: list_char > int] :
              ( ( P @ ( plus_plus_nat @ K @ N2 ) @ S6 @ T7 )
              & ( bval @ B @ S6 )
              & ( big_big_step @ ( produc1193801173ar_int @ C @ S6 ) @ T6 ) ) )
     => ( ! [T6: list_char > int,T7: list_char > int] :
            ( ( Q @ T6 @ T7 )
           => ? [S6: list_char > int,S8: list_char > int] :
                ( ? [N3: nat] : ( P @ ( plus_plus_nat @ K @ N3 ) @ S6 @ S8 )
                & ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S6 ) @ T6 )
                & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S8 ) @ T7 ) ) )
       => ( ( Q @ T @ T2 )
         => ? [S3: list_char > int,S4: list_char > int] :
              ( ( P @ K @ S3 @ S4 )
              & ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S3 ) @ T )
              & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S4 ) @ T2 ) ) ) ) ) ).

% While_backwards_frontier_ir_valid'
thf(fact_54_sym__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C2: com,C: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ ( relati186416454e_flip @ P ) @ C2 @ C @ ( relati186416454e_flip @ Q ) )
     => ( relati775585786_valid @ P @ C @ C2 @ Q ) ) ).

% sym_ir_valid
thf(fact_55_pred__equals__eq2,axiom,
    ! [R: set_Pr1986765409at_nat,S9: set_Pr1986765409at_nat] :
      ( ( ( ^ [X: nat,Y4: nat] : ( member701585322at_nat @ ( product_Pair_nat_nat @ X @ Y4 ) @ R ) )
        = ( ^ [X: nat,Y4: nat] : ( member701585322at_nat @ ( product_Pair_nat_nat @ X @ Y4 ) @ S9 ) ) )
      = ( R = S9 ) ) ).

% pred_equals_eq2
thf(fact_56_pred__equals__eq2,axiom,
    ! [R: set_Pr1148378109ar_int,S9: set_Pr1148378109ar_int] :
      ( ( ( ^ [X: com,Y4: list_char > int] : ( member92250950ar_int @ ( produc1193801173ar_int @ X @ Y4 ) @ R ) )
        = ( ^ [X: com,Y4: list_char > int] : ( member92250950ar_int @ ( produc1193801173ar_int @ X @ Y4 ) @ S9 ) ) )
      = ( R = S9 ) ) ).

% pred_equals_eq2
thf(fact_57_com_Oinject_I2_J,axiom,
    ! [X31: com,X32: com,Y31: com,Y32: com] :
      ( ( ( seq @ X31 @ X32 )
        = ( seq @ Y31 @ Y32 ) )
      = ( ( X31 = Y31 )
        & ( X32 = Y32 ) ) ) ).

% com.inject(2)
thf(fact_58_add__Suc__right,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus_nat @ M @ ( suc @ N ) )
      = ( suc @ ( plus_plus_nat @ M @ N ) ) ) ).

% add_Suc_right
thf(fact_59_Seq__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,D2: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ C @ C2 @ Q )
     => ( ( relati775585786_valid @ Q @ D @ D2 @ R )
       => ( relati775585786_valid @ P @ ( seq @ C @ D ) @ ( seq @ C2 @ D2 ) @ R ) ) ) ).

% Seq_ir_valid
thf(fact_60_meh__simp,axiom,
    ! [S2: list_char > int,T2: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ skip @ S2 ) @ T2 )
      = ( S2 = T2 ) ) ).

% meh_simp
thf(fact_61_Seq2__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,C2: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ C @ skip @ Q )
     => ( ( relati775585786_valid @ Q @ D @ C2 @ R )
       => ( relati775585786_valid @ P @ ( seq @ C @ D ) @ C2 @ R ) ) ) ).

% Seq2_ir_valid
thf(fact_62_Seq1__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ C @ C2 @ Q )
     => ( ( relati775585786_valid @ Q @ D @ skip @ R )
       => ( relati775585786_valid @ P @ ( seq @ C @ D ) @ C2 @ R ) ) ) ).

% Seq1_ir_valid
thf(fact_63_com_Odistinct_I3_J,axiom,
    ! [X31: com,X32: com] :
      ( skip
     != ( seq @ X31 @ X32 ) ) ).

% com.distinct(3)
thf(fact_64_com_Odistinct_I17_J,axiom,
    ! [X31: com,X32: com,X51: bexp,X52: com] :
      ( ( seq @ X31 @ X32 )
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(17)
thf(fact_65_com_Odistinct_I7_J,axiom,
    ! [X51: bexp,X52: com] :
      ( skip
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(7)
thf(fact_66_add__Suc__shift,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus_nat @ ( suc @ M ) @ N )
      = ( plus_plus_nat @ M @ ( suc @ N ) ) ) ).

% add_Suc_shift
thf(fact_67_nat__arith_Osuc1,axiom,
    ! [A4: nat,K: nat,A: nat] :
      ( ( A4
        = ( plus_plus_nat @ K @ A ) )
     => ( ( suc @ A4 )
        = ( plus_plus_nat @ K @ ( suc @ A ) ) ) ) ).

% nat_arith.suc1
thf(fact_68_add__Suc,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus_nat @ ( suc @ M ) @ N )
      = ( suc @ ( plus_plus_nat @ M @ N ) ) ) ).

% add_Suc
thf(fact_69_ir__valid__Seq1_H,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C1: com,C22: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ ( seq @ C1 @ C22 ) @ C2 @ Q )
     => ( relati775585786_valid
        @ ^ [T3: list_char > int,T5: list_char > int] :
          ? [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ( big_big_step @ ( produc1193801173ar_int @ C1 @ S5 ) @ T3 )
            & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S7 ) @ T5 )
            & ? [U2: list_char > int] :
                ( ( big_big_step @ ( produc1193801173ar_int @ C22 @ T3 ) @ U2 )
                & ( Q @ U2 @ T5 ) ) )
        @ C22
        @ skip
        @ Q ) ) ).

% ir_valid_Seq1'
thf(fact_70_flip__def,axiom,
    ( relati186416454e_flip
    = ( ^ [P3: ( list_char > int ) > ( list_char > int ) > $o,S5: list_char > int,S7: list_char > int] : ( P3 @ S7 @ S5 ) ) ) ).

% flip_def
thf(fact_71_ir__valid__Seq1,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C1: com,C22: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ ( seq @ C1 @ C22 ) @ C2 @ Q )
     => ( relati775585786_valid @ P @ C1 @ C2
        @ ^ [T3: list_char > int,T5: list_char > int] :
          ? [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ( big_big_step @ ( produc1193801173ar_int @ C1 @ S5 ) @ T3 )
            & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S7 ) @ T5 )
            & ? [U2: list_char > int] :
                ( ( big_big_step @ ( produc1193801173ar_int @ C22 @ T3 ) @ U2 )
                & ( Q @ U2 @ T5 ) ) ) ) ) ).

% ir_valid_Seq1
thf(fact_72_SeqE,axiom,
    ! [C1: com,C22: com,S1: list_char > int,S32: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( seq @ C1 @ C22 ) @ S1 ) @ S32 )
     => ~ ! [S_22: list_char > int] :
            ( ( big_big_step @ ( produc1193801173ar_int @ C1 @ S1 ) @ S_22 )
           => ~ ( big_big_step @ ( produc1193801173ar_int @ C22 @ S_22 ) @ S32 ) ) ) ).

% SeqE
thf(fact_73_Seq__assoc,axiom,
    ! [C1: com,C22: com,C32: com,S: list_char > int,S2: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( seq @ ( seq @ C1 @ C22 ) @ C32 ) @ S ) @ S2 )
      = ( big_big_step @ ( produc1193801173ar_int @ ( seq @ C1 @ ( seq @ C22 @ C32 ) ) @ S ) @ S2 ) ) ).

% Seq_assoc
thf(fact_74_Seq,axiom,
    ! [C_1: com,S_1: list_char > int,S_2: list_char > int,C_2: com,S_3: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ C_1 @ S_1 ) @ S_2 )
     => ( ( big_big_step @ ( produc1193801173ar_int @ C_2 @ S_2 ) @ S_3 )
       => ( big_big_step @ ( produc1193801173ar_int @ ( seq @ C_1 @ C_2 ) @ S_1 ) @ S_3 ) ) ) ).

% Seq
thf(fact_75_SkipE,axiom,
    ! [S: list_char > int,T: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ skip @ S ) @ T )
     => ( T = S ) ) ).

% SkipE
thf(fact_76_Skip,axiom,
    ! [S: list_char > int] : ( big_big_step @ ( produc1193801173ar_int @ skip @ S ) @ S ) ).

% Skip
thf(fact_77_ir__valid__track__history,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,S: list_char > int,S2: list_char > int] :
      ( ( relati775585786_valid @ P @ C @ C2 @ Q )
     => ( relati775585786_valid @ P @ C @ C2
        @ ^ [T3: list_char > int,T5: list_char > int] :
            ( ( Q @ S @ S2 )
            & ? [S5: list_char > int,S7: list_char > int] :
                ( ( P @ S5 @ S7 )
                & ( big_big_step @ ( produc1193801173ar_int @ C @ S5 ) @ T3 )
                & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S7 ) @ T5 ) ) ) ) ) ).

% ir_valid_track_history
thf(fact_78_ir__valid__While1,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,K: nat,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ K ) @ ( while @ B @ C ) @ C2 @ Q )
     => ( relati775585786_valid
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( relati23543761ar_int @ P @ B @ C @ K @ S5 @ S7 )
            & ( bval @ B @ S5 ) )
        @ C
        @ skip
        @ ^ [T3: list_char > int,T5: list_char > int] :
            ( ( relati23543761ar_int @ P @ B @ C @ ( suc @ K ) @ T3 @ T5 )
            & ? [U2: list_char > int,U3: list_char > int] :
                ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ T3 ) @ U2 )
                & ( big_big_step @ ( produc1193801173ar_int @ C2 @ T5 ) @ U3 )
                & ( Q @ U2 @ U3 ) ) ) ) ) ).

% ir_valid_While1
thf(fact_79_add__right__cancel,axiom,
    ! [B: nat,A: nat,C: nat] :
      ( ( ( plus_plus_nat @ B @ A )
        = ( plus_plus_nat @ C @ A ) )
      = ( B = C ) ) ).

% add_right_cancel
thf(fact_80_add__left__cancel,axiom,
    ! [A: nat,B: nat,C: nat] :
      ( ( ( plus_plus_nat @ A @ B )
        = ( plus_plus_nat @ A @ C ) )
      = ( B = C ) ) ).

% add_left_cancel
thf(fact_81_ir__valid__If,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C1: com,C22: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati775585786_valid @ P @ ( if @ B @ C1 @ C22 ) @ C2 @ Q )
     => ( ( relati775585786_valid
          @ ^ [S5: list_char > int,S7: list_char > int] :
              ( ( P @ S5 @ S7 )
              & ( bval @ B @ S5 ) )
          @ C1
          @ C2
          @ ^ [T3: list_char > int,T5: list_char > int] :
              ( ( Q @ T3 @ T5 )
              & ? [S5: list_char > int,S7: list_char > int] :
                  ( ( P @ S5 @ S7 )
                  & ( big_big_step @ ( produc1193801173ar_int @ C1 @ S5 ) @ T3 )
                  & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S7 ) @ T5 )
                  & ( bval @ B @ S5 ) ) ) )
        & ( relati775585786_valid
          @ ^ [S5: list_char > int,S7: list_char > int] :
              ( ( P @ S5 @ S7 )
              & ~ ( bval @ B @ S5 ) )
          @ C22
          @ C2
          @ ^ [T3: list_char > int,T5: list_char > int] :
              ( ( Q @ T3 @ T5 )
              & ? [S5: list_char > int,S7: list_char > int] :
                  ( ( P @ S5 @ S7 )
                  & ( big_big_step @ ( produc1193801173ar_int @ C22 @ S5 ) @ T3 )
                  & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S7 ) @ T5 )
                  & ~ ( bval @ B @ S5 ) ) ) ) ) ) ).

% ir_valid_If
thf(fact_82_while__unfold,axiom,
    ! [B: bexp,C: com,S6: list_char > int,T4: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S6 ) @ T4 )
      = ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ ( seq @ C @ ( while @ B @ C ) ) @ skip ) @ S6 ) @ T4 ) ) ).

% while_unfold
thf(fact_83_If__True__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_1: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_2: com] :
      ( ( relati775585786_valid
        @ ^ [A5: list_char > int,C3: list_char > int] :
            ( ( P @ A5 @ C3 )
            & ( bval @ B @ A5 ) )
        @ C_1
        @ C2
        @ Q )
     => ( relati775585786_valid @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).

% If_True_ir_valid
thf(fact_84_If__False__ir__valid,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_2: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_1: com] :
      ( ( relati775585786_valid
        @ ^ [A5: list_char > int,C3: list_char > int] :
            ( ( P @ A5 @ C3 )
            & ~ ( bval @ B @ A5 ) )
        @ C_2
        @ C2
        @ Q )
     => ( relati775585786_valid @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).

% If_False_ir_valid
thf(fact_85_ir__While__True,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ( bval @ B @ S5 ) )
        @ ( seq @ C @ ( while @ B @ C ) )
        @ C2
        @ Q )
     => ( relati2102071307_hoare @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).

% ir_While_True
thf(fact_86_com_Oinject_I3_J,axiom,
    ! [X41: bexp,X42: com,X43: com,Y41: bexp,Y42: com,Y43: com] :
      ( ( ( if @ X41 @ X42 @ X43 )
        = ( if @ Y41 @ Y42 @ Y43 ) )
      = ( ( X41 = Y41 )
        & ( X42 = Y42 )
        & ( X43 = Y43 ) ) ) ).

% com.inject(3)
thf(fact_87_ir__Skip__Skip,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o] : ( relati2102071307_hoare @ P @ skip @ skip @ P ) ).

% ir_Skip_Skip
thf(fact_88_ir__hoare__Skip__Skip,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P @ skip @ skip @ Q )
      = ( ! [S5: list_char > int,S7: list_char > int] :
            ( ( Q @ S5 @ S7 )
           => ( P @ S5 @ S7 ) ) ) ) ).

% ir_hoare_Skip_Skip
thf(fact_89_ir__disj,axiom,
    ! [P_1: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q_1: ( list_char > int ) > ( list_char > int ) > $o,P_2: ( list_char > int ) > ( list_char > int ) > $o,Q_2: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P_1 @ C @ C2 @ Q_1 )
     => ( ( relati2102071307_hoare @ P_2 @ C @ C2 @ Q_2 )
       => ( relati2102071307_hoare
          @ ^ [S5: list_char > int,S7: list_char > int] :
              ( ( P_1 @ S5 @ S7 )
              | ( P_2 @ S5 @ S7 ) )
          @ C
          @ C2
          @ ^ [T3: list_char > int,T5: list_char > int] :
              ( ( Q_1 @ T3 @ T5 )
              | ( Q_2 @ T3 @ T5 ) ) ) ) ) ).

% ir_disj
thf(fact_90_ir__pre,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,P2: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
     => ( ! [S3: list_char > int,S4: list_char > int] :
            ( ( P @ S3 @ S4 )
           => ( P2 @ S3 @ S4 ) )
       => ( relati2102071307_hoare @ P2 @ C @ C2 @ Q ) ) ) ).

% ir_pre
thf(fact_91_ir__post,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,Q2: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
     => ( ! [S3: list_char > int,S4: list_char > int] :
            ( ( Q2 @ S3 @ S4 )
           => ( Q @ S3 @ S4 ) )
       => ( relati2102071307_hoare @ P @ C @ C2 @ Q2 ) ) ) ).

% ir_post
thf(fact_92_ir__conseq,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,P2: ( list_char > int ) > ( list_char > int ) > $o,Q2: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
     => ( ! [S3: list_char > int,S4: list_char > int] :
            ( ( P @ S3 @ S4 )
           => ( P2 @ S3 @ S4 ) )
       => ( ! [S3: list_char > int,S4: list_char > int] :
              ( ( Q2 @ S3 @ S4 )
             => ( Q @ S3 @ S4 ) )
         => ( relati2102071307_hoare @ P2 @ C @ C2 @ Q2 ) ) ) ) ).

% ir_conseq
thf(fact_93_ir__If__False,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_2: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_1: com] :
      ( ( relati2102071307_hoare
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ~ ( bval @ B @ S5 ) )
        @ C_2
        @ C2
        @ Q )
     => ( relati2102071307_hoare @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).

% ir_If_False
thf(fact_94_ir__If__True,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_1: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_2: com] :
      ( ( relati2102071307_hoare
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ( bval @ B @ S5 ) )
        @ C_1
        @ C2
        @ Q )
     => ( relati2102071307_hoare @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).

% ir_If_True
thf(fact_95_soundness,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
     => ( relati775585786_valid @ P @ C @ C2 @ Q ) ) ).

% soundness
thf(fact_96_com_Odistinct_I19_J,axiom,
    ! [X41: bexp,X42: com,X43: com,X51: bexp,X52: com] :
      ( ( if @ X41 @ X42 @ X43 )
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(19)
thf(fact_97_com_Odistinct_I5_J,axiom,
    ! [X41: bexp,X42: com,X43: com] :
      ( skip
     != ( if @ X41 @ X42 @ X43 ) ) ).

% com.distinct(5)
thf(fact_98_com_Odistinct_I15_J,axiom,
    ! [X31: com,X32: com,X41: bexp,X42: com,X43: com] :
      ( ( seq @ X31 @ X32 )
     != ( if @ X41 @ X42 @ X43 ) ) ).

% com.distinct(15)
thf(fact_99_ir__sym,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ ( relati186416454e_flip @ P ) @ C @ C2 @ ( relati186416454e_flip @ Q ) )
     => ( relati2102071307_hoare @ P @ C2 @ C @ Q ) ) ).

% ir_sym
thf(fact_100_ir__Seq1,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
     => ( ( relati2102071307_hoare @ Q @ D @ skip @ R )
       => ( relati2102071307_hoare @ P @ ( seq @ C @ D ) @ C2 @ R ) ) ) ).

% ir_Seq1
thf(fact_101_commute__if,axiom,
    ! [B1: bexp,B22: bexp,C11: com,C12: com,C22: com,S6: list_char > int,T4: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( if @ B1 @ ( if @ B22 @ C11 @ C12 ) @ C22 ) @ S6 ) @ T4 )
      = ( big_big_step @ ( produc1193801173ar_int @ ( if @ B22 @ ( if @ B1 @ C11 @ C22 ) @ ( if @ B1 @ C12 @ C22 ) ) @ S6 ) @ T4 ) ) ).

% commute_if
thf(fact_102_triv__if,axiom,
    ! [B: bexp,C: com,S6: list_char > int,T4: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C @ C ) @ S6 ) @ T4 )
      = ( big_big_step @ ( produc1193801173ar_int @ C @ S6 ) @ T4 ) ) ).

% triv_if
thf(fact_103_ab__semigroup__add__class_Oadd__ac_I1_J,axiom,
    ! [A: nat,B: nat,C: nat] :
      ( ( plus_plus_nat @ ( plus_plus_nat @ A @ B ) @ C )
      = ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).

% ab_semigroup_add_class.add_ac(1)
thf(fact_104_add__mono__thms__linordered__semiring_I4_J,axiom,
    ! [I: nat,J: nat,K: nat,L: nat] :
      ( ( ( I = J )
        & ( K = L ) )
     => ( ( plus_plus_nat @ I @ K )
        = ( plus_plus_nat @ J @ L ) ) ) ).

% add_mono_thms_linordered_semiring(4)
thf(fact_105_group__cancel_Oadd1,axiom,
    ! [A4: nat,K: nat,A: nat,B: nat] :
      ( ( A4
        = ( plus_plus_nat @ K @ A ) )
     => ( ( plus_plus_nat @ A4 @ B )
        = ( plus_plus_nat @ K @ ( plus_plus_nat @ A @ B ) ) ) ) ).

% group_cancel.add1
thf(fact_106_group__cancel_Oadd2,axiom,
    ! [B4: nat,K: nat,B: nat,A: nat] :
      ( ( B4
        = ( plus_plus_nat @ K @ B ) )
     => ( ( plus_plus_nat @ A @ B4 )
        = ( plus_plus_nat @ K @ ( plus_plus_nat @ A @ B ) ) ) ) ).

% group_cancel.add2
thf(fact_107_add_Oassoc,axiom,
    ! [A: nat,B: nat,C: nat] :
      ( ( plus_plus_nat @ ( plus_plus_nat @ A @ B ) @ C )
      = ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).

% add.assoc
thf(fact_108_add_Ocommute,axiom,
    ( plus_plus_nat
    = ( ^ [A5: nat,B5: nat] : ( plus_plus_nat @ B5 @ A5 ) ) ) ).

% add.commute
thf(fact_109_add_Oleft__commute,axiom,
    ! [B: nat,A: nat,C: nat] :
      ( ( plus_plus_nat @ B @ ( plus_plus_nat @ A @ C ) )
      = ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).

% add.left_commute
thf(fact_110_add__left__imp__eq,axiom,
    ! [A: nat,B: nat,C: nat] :
      ( ( ( plus_plus_nat @ A @ B )
        = ( plus_plus_nat @ A @ C ) )
     => ( B = C ) ) ).

% add_left_imp_eq
thf(fact_111_add__right__imp__eq,axiom,
    ! [B: nat,A: nat,C: nat] :
      ( ( ( plus_plus_nat @ B @ A )
        = ( plus_plus_nat @ C @ A ) )
     => ( B = C ) ) ).

% add_right_imp_eq
thf(fact_112_ir__Skip,axiom,
    ! [Q: ( list_char > int ) > ( list_char > int ) > $o,P: ( list_char > int ) > ( list_char > int ) > $o,C2: com] :
      ( ! [T6: list_char > int,T7: list_char > int] :
          ( ( Q @ T6 @ T7 )
         => ? [S8: list_char > int] :
              ( ( P @ T6 @ S8 )
              & ( big_big_step @ ( produc1193801173ar_int @ C2 @ S8 ) @ T7 ) ) )
     => ( relati2102071307_hoare @ P @ skip @ C2 @ Q ) ) ).

% ir_Skip
thf(fact_113_IfFalse,axiom,
    ! [B: bexp,S: list_char > int,C_2: com,T: list_char > int,C_1: com] :
      ( ~ ( bval @ B @ S )
     => ( ( big_big_step @ ( produc1193801173ar_int @ C_2 @ S ) @ T )
       => ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C_1 @ C_2 ) @ S ) @ T ) ) ) ).

% IfFalse
thf(fact_114_IfTrue,axiom,
    ! [B: bexp,S: list_char > int,C_1: com,T: list_char > int,C_2: com] :
      ( ( bval @ B @ S )
     => ( ( big_big_step @ ( produc1193801173ar_int @ C_1 @ S ) @ T )
       => ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C_1 @ C_2 ) @ S ) @ T ) ) ) ).

% IfTrue
thf(fact_115_IfE,axiom,
    ! [B: bexp,C1: com,C22: com,S: list_char > int,T: list_char > int] :
      ( ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C1 @ C22 ) @ S ) @ T )
     => ( ( ( bval @ B @ S )
         => ~ ( big_big_step @ ( produc1193801173ar_int @ C1 @ S ) @ T ) )
       => ~ ( ~ ( bval @ B @ S )
           => ~ ( big_big_step @ ( produc1193801173ar_int @ C22 @ S ) @ T ) ) ) ) ).

% IfE
thf(fact_116_ir__While__False,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C: com] :
      ( ( relati2102071307_hoare
        @ ^ [S5: list_char > int,S7: list_char > int] :
            ( ( P @ S5 @ S7 )
            & ~ ( bval @ B @ S5 ) )
        @ skip
        @ C2
        @ Q )
     => ( relati2102071307_hoare @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).

% ir_While_False
thf(fact_117_com_Oexhaust,axiom,
    ! [Y: com] :
      ( ( Y != skip )
     => ( ! [X21: list_char,X22: aexp] :
            ( Y
           != ( assign @ X21 @ X22 ) )
       => ( ! [X312: com,X322: com] :
              ( Y
             != ( seq @ X312 @ X322 ) )
         => ( ! [X412: bexp,X422: com,X432: com] :
                ( Y
               != ( if @ X412 @ X422 @ X432 ) )
           => ~ ! [X512: bexp,X522: com] :
                  ( Y
                 != ( while @ X512 @ X522 ) ) ) ) ) ) ).

% com.exhaust
thf(fact_118_com_Oinduct,axiom,
    ! [P: com > $o,Com: com] :
      ( ( P @ skip )
     => ( ! [X12: list_char,X23: aexp] : ( P @ ( assign @ X12 @ X23 ) )
       => ( ! [X12: com,X23: com] :
              ( ( P @ X12 )
             => ( ( P @ X23 )
               => ( P @ ( seq @ X12 @ X23 ) ) ) )
         => ( ! [X12: bexp,X23: com,X33: com] :
                ( ( P @ X23 )
               => ( ( P @ X33 )
                 => ( P @ ( if @ X12 @ X23 @ X33 ) ) ) )
           => ( ! [X12: bexp,X23: com] :
                  ( ( P @ X23 )
                 => ( P @ ( while @ X12 @ X23 ) ) )
             => ( P @ Com ) ) ) ) ) ) ).

% com.induct
thf(fact_119_image2__def,axiom,
    ( bNF_Gr202451329ar_int
    = ( ^ [A6: set_Pr1148378109ar_int,F: produc1260470173ar_int > com,G: produc1260470173ar_int > list_char > int] :
          ( collec770796680ar_int
          @ ^ [Uu: produc1260470173ar_int] :
            ? [A5: produc1260470173ar_int] :
              ( ( Uu
                = ( produc1193801173ar_int @ ( F @ A5 ) @ ( G @ A5 ) ) )
              & ( member92250950ar_int @ A5 @ A6 ) ) ) ) ) ).

% image2_def
thf(fact_120_image2__def,axiom,
    ( bNF_Gr749752805at_nat
    = ( ^ [A6: set_Pr1148378109ar_int,F: produc1260470173ar_int > nat,G: produc1260470173ar_int > nat] :
          ( collec7649004at_nat
          @ ^ [Uu: product_prod_nat_nat] :
            ? [A5: produc1260470173ar_int] :
              ( ( Uu
                = ( product_Pair_nat_nat @ ( F @ A5 ) @ ( G @ A5 ) ) )
              & ( member92250950ar_int @ A5 @ A6 ) ) ) ) ) ).

% image2_def
thf(fact_121_While__backwards__frontier__ir__valid,axiom,
    ! [P: nat > ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ! [N2: nat] :
          ( relati775585786_valid
          @ ^ [S5: list_char > int,S7: list_char > int] :
              ( ( P @ N2 @ S5 @ S7 )
              & ( bval @ B @ S5 ) )
          @ C
          @ skip
          @ ( P @ ( suc @ N2 ) ) )
     => ( ( relati775585786_valid
          @ ^ [S5: list_char > int,S7: list_char > int] :
            ? [N4: nat] : ( P @ N4 @ S5 @ S7 )
          @ ( while @ B @ C )
          @ C2
          @ Q )
       => ( relati775585786_valid @ ( P @ zero_zero_nat ) @ ( while @ B @ C ) @ C2 @ Q ) ) ) ).

% While_backwards_frontier_ir_valid
thf(fact_122_com_Oinject_I1_J,axiom,
    ! [X212: list_char,X222: aexp,Y21: list_char,Y22: aexp] :
      ( ( ( assign @ X212 @ X222 )
        = ( assign @ Y21 @ Y22 ) )
      = ( ( X212 = Y21 )
        & ( X222 = Y22 ) ) ) ).

% com.inject(1)
thf(fact_123_add_Oleft__neutral,axiom,
    ! [A: nat] :
      ( ( plus_plus_nat @ zero_zero_nat @ A )
      = A ) ).

% add.left_neutral
thf(fact_124_add_Oright__neutral,axiom,
    ! [A: nat] :
      ( ( plus_plus_nat @ A @ zero_zero_nat )
      = A ) ).

% add.right_neutral
thf(fact_125_add__cancel__left__left,axiom,
    ! [B: nat,A: nat] :
      ( ( ( plus_plus_nat @ B @ A )
        = A )
      = ( B = zero_zero_nat ) ) ).

% add_cancel_left_left
thf(fact_126_add__cancel__left__right,axiom,
    ! [A: nat,B: nat] :
      ( ( ( plus_plus_nat @ A @ B )
        = A )
      = ( B = zero_zero_nat ) ) ).

% add_cancel_left_right
thf(fact_127_add__cancel__right__left,axiom,
    ! [A: nat,B: nat] :
      ( ( A
        = ( plus_plus_nat @ B @ A ) )
      = ( B = zero_zero_nat ) ) ).

% add_cancel_right_left
thf(fact_128_add__cancel__right__right,axiom,
    ! [A: nat,B: nat] :
      ( ( A
        = ( plus_plus_nat @ A @ B ) )
      = ( B = zero_zero_nat ) ) ).

% add_cancel_right_right
thf(fact_129_add__eq__0__iff__both__eq__0,axiom,
    ! [X4: nat,Y: nat] :
      ( ( ( plus_plus_nat @ X4 @ Y )
        = zero_zero_nat )
      = ( ( X4 = zero_zero_nat )
        & ( Y = zero_zero_nat ) ) ) ).

% add_eq_0_iff_both_eq_0
thf(fact_130_zero__eq__add__iff__both__eq__0,axiom,
    ! [X4: nat,Y: nat] :
      ( ( zero_zero_nat
        = ( plus_plus_nat @ X4 @ Y ) )
      = ( ( X4 = zero_zero_nat )
        & ( Y = zero_zero_nat ) ) ) ).

% zero_eq_add_iff_both_eq_0
thf(fact_131_add__is__0,axiom,
    ! [M: nat,N: nat] :
      ( ( ( plus_plus_nat @ M @ N )
        = zero_zero_nat )
      = ( ( M = zero_zero_nat )
        & ( N = zero_zero_nat ) ) ) ).

% add_is_0
thf(fact_132_Nat_Oadd__0__right,axiom,
    ! [M: nat] :
      ( ( plus_plus_nat @ M @ zero_zero_nat )
      = M ) ).

% Nat.add_0_right
thf(fact_133_zero__reorient,axiom,
    ! [X4: nat] :
      ( ( zero_zero_nat = X4 )
      = ( X4 = zero_zero_nat ) ) ).

% zero_reorient
thf(fact_134_comm__monoid__add__class_Oadd__0,axiom,
    ! [A: nat] :
      ( ( plus_plus_nat @ zero_zero_nat @ A )
      = A ) ).

% comm_monoid_add_class.add_0
thf(fact_135_add_Ocomm__neutral,axiom,
    ! [A: nat] :
      ( ( plus_plus_nat @ A @ zero_zero_nat )
      = A ) ).

% add.comm_neutral
thf(fact_136_nat_Odistinct_I1_J,axiom,
    ! [X2: nat] :
      ( zero_zero_nat
     != ( suc @ X2 ) ) ).

% nat.distinct(1)
thf(fact_137_old_Onat_Odistinct_I2_J,axiom,
    ! [Nat2: nat] :
      ( ( suc @ Nat2 )
     != zero_zero_nat ) ).

% old.nat.distinct(2)
thf(fact_138_old_Onat_Odistinct_I1_J,axiom,
    ! [Nat2: nat] :
      ( zero_zero_nat
     != ( suc @ Nat2 ) ) ).

% old.nat.distinct(1)
thf(fact_139_nat_OdiscI,axiom,
    ! [Nat: nat,X2: nat] :
      ( ( Nat
        = ( suc @ X2 ) )
     => ( Nat != zero_zero_nat ) ) ).

% nat.discI
thf(fact_140_nat__induct,axiom,
    ! [P: nat > $o,N: nat] :
      ( ( P @ zero_zero_nat )
     => ( ! [N2: nat] :
            ( ( P @ N2 )
           => ( P @ ( suc @ N2 ) ) )
       => ( P @ N ) ) ) ).

% nat_induct
thf(fact_141_diff__induct,axiom,
    ! [P: nat > nat > $o,M: nat,N: nat] :
      ( ! [X3: nat] : ( P @ X3 @ zero_zero_nat )
     => ( ! [Y3: nat] : ( P @ zero_zero_nat @ ( suc @ Y3 ) )
       => ( ! [X3: nat,Y3: nat] :
              ( ( P @ X3 @ Y3 )
             => ( P @ ( suc @ X3 ) @ ( suc @ Y3 ) ) )
         => ( P @ M @ N ) ) ) ) ).

% diff_induct
thf(fact_142_zero__induct,axiom,
    ! [P: nat > $o,K: nat] :
      ( ( P @ K )
     => ( ! [N2: nat] :
            ( ( P @ ( suc @ N2 ) )
           => ( P @ N2 ) )
       => ( P @ zero_zero_nat ) ) ) ).

% zero_induct
thf(fact_143_Suc__neq__Zero,axiom,
    ! [M: nat] :
      ( ( suc @ M )
     != zero_zero_nat ) ).

% Suc_neq_Zero
thf(fact_144_Zero__neq__Suc,axiom,
    ! [M: nat] :
      ( zero_zero_nat
     != ( suc @ M ) ) ).

% Zero_neq_Suc
thf(fact_145_Zero__not__Suc,axiom,
    ! [M: nat] :
      ( zero_zero_nat
     != ( suc @ M ) ) ).

% Zero_not_Suc
thf(fact_146_old_Onat_Oexhaust,axiom,
    ! [Y: nat] :
      ( ( Y != zero_zero_nat )
     => ~ ! [Nat3: nat] :
            ( Y
           != ( suc @ Nat3 ) ) ) ).

% old.nat.exhaust
thf(fact_147_old_Onat_Oinducts,axiom,
    ! [P: nat > $o,Nat: nat] :
      ( ( P @ zero_zero_nat )
     => ( ! [Nat3: nat] :
            ( ( P @ Nat3 )
           => ( P @ ( suc @ Nat3 ) ) )
       => ( P @ Nat ) ) ) ).

% old.nat.inducts
thf(fact_148_not0__implies__Suc,axiom,
    ! [N: nat] :
      ( ( N != zero_zero_nat )
     => ? [M2: nat] :
          ( N
          = ( suc @ M2 ) ) ) ).

% not0_implies_Suc
thf(fact_149_plus__nat_Oadd__0,axiom,
    ! [N: nat] :
      ( ( plus_plus_nat @ zero_zero_nat @ N )
      = N ) ).

% plus_nat.add_0
thf(fact_150_add__eq__self__zero,axiom,
    ! [M: nat,N: nat] :
      ( ( ( plus_plus_nat @ M @ N )
        = M )
     => ( N = zero_zero_nat ) ) ).

% add_eq_self_zero
thf(fact_151_image2__eqI,axiom,
    ! [B: com,F2: produc1260470173ar_int > com,X4: produc1260470173ar_int,C: list_char > int,G2: produc1260470173ar_int > list_char > int,A4: set_Pr1148378109ar_int] :
      ( ( B
        = ( F2 @ X4 ) )
     => ( ( C
          = ( G2 @ X4 ) )
       => ( ( member92250950ar_int @ X4 @ A4 )
         => ( member92250950ar_int @ ( produc1193801173ar_int @ B @ C ) @ ( bNF_Gr202451329ar_int @ A4 @ F2 @ G2 ) ) ) ) ) ).

% image2_eqI
thf(fact_152_image2__eqI,axiom,
    ! [B: nat,F2: produc1260470173ar_int > nat,X4: produc1260470173ar_int,C: nat,G2: produc1260470173ar_int > nat,A4: set_Pr1148378109ar_int] :
      ( ( B
        = ( F2 @ X4 ) )
     => ( ( C
          = ( G2 @ X4 ) )
       => ( ( member92250950ar_int @ X4 @ A4 )
         => ( member701585322at_nat @ ( product_Pair_nat_nat @ B @ C ) @ ( bNF_Gr749752805at_nat @ A4 @ F2 @ G2 ) ) ) ) ) ).

% image2_eqI
thf(fact_153_com_Odistinct_I13_J,axiom,
    ! [X212: list_char,X222: aexp,X51: bexp,X52: com] :
      ( ( assign @ X212 @ X222 )
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(13)
thf(fact_154_com_Odistinct_I1_J,axiom,
    ! [X212: list_char,X222: aexp] :
      ( skip
     != ( assign @ X212 @ X222 ) ) ).

% com.distinct(1)
thf(fact_155_com_Odistinct_I9_J,axiom,
    ! [X212: list_char,X222: aexp,X31: com,X32: com] :
      ( ( assign @ X212 @ X222 )
     != ( seq @ X31 @ X32 ) ) ).

% com.distinct(9)
thf(fact_156_com_Odistinct_I11_J,axiom,
    ! [X212: list_char,X222: aexp,X41: bexp,X42: com,X43: com] :
      ( ( assign @ X212 @ X222 )
     != ( if @ X41 @ X42 @ X43 ) ) ).

% com.distinct(11)
thf(fact_157_get__back_Osimps_I1_J,axiom,
    ! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com] :
      ( ( relati23543761ar_int @ P @ B @ C @ zero_zero_nat )
      = P ) ).

% get_back.simps(1)
thf(fact_158_one__is__add,axiom,
    ! [M: nat,N: nat] :
      ( ( ( suc @ zero_zero_nat )
        = ( plus_plus_nat @ M @ N ) )
      = ( ( ( M
            = ( suc @ zero_zero_nat ) )
          & ( N = zero_zero_nat ) )
        | ( ( M = zero_zero_nat )
          & ( N
            = ( suc @ zero_zero_nat ) ) ) ) ) ).

% one_is_add
thf(fact_159_add__is__1,axiom,
    ! [M: nat,N: nat] :
      ( ( ( plus_plus_nat @ M @ N )
        = ( suc @ zero_zero_nat ) )
      = ( ( ( M
            = ( suc @ zero_zero_nat ) )
          & ( N = zero_zero_nat ) )
        | ( ( M = zero_zero_nat )
          & ( N
            = ( suc @ zero_zero_nat ) ) ) ) ) ).

% add_is_1
thf(fact_160_ir__While__backwards__frontier,axiom,
    ! [P: nat > ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
      ( ! [N2: nat] :
          ( relati2102071307_hoare
          @ ^ [S5: list_char > int,S7: list_char > int] :
              ( ( P @ N2 @ S5 @ S7 )
              & ( bval @ B @ S5 ) )
          @ C
          @ skip
          @ ( P @ ( suc @ N2 ) ) )
     => ( ( relati2102071307_hoare
          @ ^ [S5: list_char > int,S7: list_char > int] :
            ? [N4: nat] : ( P @ N4 @ S5 @ S7 )
          @ ( while @ B @ C )
          @ C2
          @ Q )
       => ( relati2102071307_hoare @ ( P @ zero_zero_nat ) @ ( while @ B @ C ) @ C2 @ Q ) ) ) ).

% ir_While_backwards_frontier
thf(fact_161_com_Osize__gen_I4_J,axiom,
    ! [X41: bexp,X42: com,X43: com] :
      ( ( size_com @ ( if @ X41 @ X42 @ X43 ) )
      = ( plus_plus_nat @ ( plus_plus_nat @ ( size_com @ X42 ) @ ( size_com @ X43 ) ) @ ( suc @ zero_zero_nat ) ) ) ).

% com.size_gen(4)
thf(fact_162_com_Osize__gen_I3_J,axiom,
    ! [X31: com,X32: com] :
      ( ( size_com @ ( seq @ X31 @ X32 ) )
      = ( plus_plus_nat @ ( plus_plus_nat @ ( size_com @ X31 ) @ ( size_com @ X32 ) ) @ ( suc @ zero_zero_nat ) ) ) ).

% com.size_gen(3)
thf(fact_163_com_Osize__gen_I5_J,axiom,
    ! [X51: bexp,X52: com] :
      ( ( size_com @ ( while @ X51 @ X52 ) )
      = ( plus_plus_nat @ ( size_com @ X52 ) @ ( suc @ zero_zero_nat ) ) ) ).

% com.size_gen(5)
thf(fact_164_com_Osize_I9_J,axiom,
    ! [X41: bexp,X42: com,X43: com] :
      ( ( size_size_com @ ( if @ X41 @ X42 @ X43 ) )
      = ( plus_plus_nat @ ( plus_plus_nat @ ( size_size_com @ X42 ) @ ( size_size_com @ X43 ) ) @ ( suc @ zero_zero_nat ) ) ) ).

% com.size(9)
thf(fact_165_size__neq__size__imp__neq,axiom,
    ! [X4: com,Y: com] :
      ( ( ( size_size_com @ X4 )
       != ( size_size_com @ Y ) )
     => ( X4 != Y ) ) ).

% size_neq_size_imp_neq
thf(fact_166_size__neq__size__imp__neq,axiom,
    ! [X4: typerep,Y: typerep] :
      ( ( ( size_size_typerep @ X4 )
       != ( size_size_typerep @ Y ) )
     => ( X4 != Y ) ) ).

% size_neq_size_imp_neq
thf(fact_167_com_Osize_I6_J,axiom,
    ( ( size_size_com @ skip )
    = zero_zero_nat ) ).

% com.size(6)
thf(fact_168_com_Osize_I7_J,axiom,
    ! [X212: list_char,X222: aexp] :
      ( ( size_size_com @ ( assign @ X212 @ X222 ) )
      = zero_zero_nat ) ).

% com.size(7)
thf(fact_169_com_Osize__gen_I1_J,axiom,
    ( ( size_com @ skip )
    = zero_zero_nat ) ).

% com.size_gen(1)
thf(fact_170_com_Osize__gen_I2_J,axiom,
    ! [X212: list_char,X222: aexp] :
      ( ( size_com @ ( assign @ X212 @ X222 ) )
      = zero_zero_nat ) ).

% com.size_gen(2)
thf(fact_171_com_Osize_I10_J,axiom,
    ! [X51: bexp,X52: com] :
      ( ( size_size_com @ ( while @ X51 @ X52 ) )
      = ( plus_plus_nat @ ( size_size_com @ X52 ) @ ( suc @ zero_zero_nat ) ) ) ).

% com.size(10)
thf(fact_172_com_Osize_I8_J,axiom,
    ! [X31: com,X32: com] :
      ( ( size_size_com @ ( seq @ X31 @ X32 ) )
      = ( plus_plus_nat @ ( plus_plus_nat @ ( size_size_com @ X31 ) @ ( size_size_com @ X32 ) ) @ ( suc @ zero_zero_nat ) ) ) ).

% com.size(8)
thf(fact_173_Euclid__induct,axiom,
    ! [P: nat > nat > $o,A: nat,B: nat] :
      ( ! [A3: nat,B3: nat] :
          ( ( P @ A3 @ B3 )
          = ( P @ B3 @ A3 ) )
     => ( ! [A3: nat] : ( P @ A3 @ zero_zero_nat )
       => ( ! [A3: nat,B3: nat] :
              ( ( P @ A3 @ B3 )
             => ( P @ A3 @ ( plus_plus_nat @ A3 @ B3 ) ) )
         => ( P @ A @ B ) ) ) ) ).

% Euclid_induct
thf(fact_174_verit__sum__simplify,axiom,
    ! [A: nat] :
      ( ( plus_plus_nat @ A @ zero_zero_nat )
      = A ) ).

% verit_sum_simplify
thf(fact_175_add__0__iff,axiom,
    ! [B: nat,A: nat] :
      ( ( B
        = ( plus_plus_nat @ B @ A ) )
      = ( A = zero_zero_nat ) ) ).

% add_0_iff
thf(fact_176_relImage__def,axiom,
    ( bNF_Gr1247133574at_nat
    = ( ^ [R2: set_Pr1986765409at_nat,F: nat > nat] :
          ( collec7649004at_nat
          @ ^ [Uu: product_prod_nat_nat] :
            ? [A1: nat,A22: nat] :
              ( ( Uu
                = ( product_Pair_nat_nat @ ( F @ A1 ) @ ( F @ A22 ) ) )
              & ( member701585322at_nat @ ( product_Pair_nat_nat @ A1 @ A22 ) @ R2 ) ) ) ) ) ).

% relImage_def
thf(fact_177_relInvImage__def,axiom,
    ( bNF_Gr1143394412nt_nat
    = ( ^ [A6: set_Pr1148378109ar_int,R2: set_Pr1986765409at_nat,F: produc1260470173ar_int > nat] :
          ( collec1834387154ar_int
          @ ^ [Uu: produc1346207591ar_int] :
            ? [A1: produc1260470173ar_int,A22: produc1260470173ar_int] :
              ( ( Uu
                = ( produc317451735ar_int @ A1 @ A22 ) )
              & ( member92250950ar_int @ A1 @ A6 )
              & ( member92250950ar_int @ A22 @ A6 )
              & ( member701585322at_nat @ ( product_Pair_nat_nat @ ( F @ A1 ) @ ( F @ A22 ) ) @ R2 ) ) ) ) ) ).

% relInvImage_def
thf(fact_178_relInvImage__def,axiom,
    ( bNF_Gr808751971at_nat
    = ( ^ [A6: set_nat,R2: set_Pr1986765409at_nat,F: nat > nat] :
          ( collec7649004at_nat
          @ ^ [Uu: product_prod_nat_nat] :
            ? [A1: nat,A22: nat] :
              ( ( Uu
                = ( product_Pair_nat_nat @ A1 @ A22 ) )
              & ( member_nat @ A1 @ A6 )
              & ( member_nat @ A22 @ A6 )
              & ( member701585322at_nat @ ( product_Pair_nat_nat @ ( F @ A1 ) @ ( F @ A22 ) ) @ R2 ) ) ) ) ) ).

% relInvImage_def
thf(fact_179_divides__aux__eq,axiom,
    ! [Q4: nat,R3: nat] :
      ( ( unique1592618082ux_nat @ ( product_Pair_nat_nat @ Q4 @ R3 ) )
      = ( R3 = zero_zero_nat ) ) ).

% divides_aux_eq
thf(fact_180_zero__natural_Orsp,axiom,
    zero_zero_nat = zero_zero_nat ).

% zero_natural.rsp
thf(fact_181_typerep_Osize__neq,axiom,
    ! [X4: typerep] :
      ( ( size_size_typerep @ X4 )
     != zero_zero_nat ) ).

% typerep.size_neq
thf(fact_182_ssubst__Pair__rhs,axiom,
    ! [R3: nat,S: nat,R: set_Pr1986765409at_nat,S2: nat] :
      ( ( member701585322at_nat @ ( product_Pair_nat_nat @ R3 @ S ) @ R )
     => ( ( S2 = S )
       => ( member701585322at_nat @ ( product_Pair_nat_nat @ R3 @ S2 ) @ R ) ) ) ).

% ssubst_Pair_rhs
thf(fact_183_ssubst__Pair__rhs,axiom,
    ! [R3: com,S: list_char > int,R: set_Pr1148378109ar_int,S2: list_char > int] :
      ( ( member92250950ar_int @ ( produc1193801173ar_int @ R3 @ S ) @ R )
     => ( ( S2 = S )
       => ( member92250950ar_int @ ( produc1193801173ar_int @ R3 @ S2 ) @ R ) ) ) ).

% ssubst_Pair_rhs
thf(fact_184_typerep_Osize_I2_J,axiom,
    ! [X1: literal,X2: list_typerep] :
      ( ( size_size_typerep @ ( typerep2 @ X1 @ X2 ) )
      = ( plus_plus_nat @ ( size_list_typerep @ size_size_typerep @ X2 ) @ ( suc @ zero_zero_nat ) ) ) ).

% typerep.size(2)
thf(fact_185_typerep_Osize__gen,axiom,
    ! [X1: literal,X2: list_typerep] :
      ( ( size_typerep @ ( typerep2 @ X1 @ X2 ) )
      = ( plus_plus_nat @ ( size_list_typerep @ size_typerep @ X2 ) @ ( suc @ zero_zero_nat ) ) ) ).

% typerep.size_gen
thf(fact_186_list_Osize__gen_I2_J,axiom,
    ! [X4: typerep > nat,X212: typerep,X222: list_typerep] :
      ( ( size_list_typerep @ X4 @ ( cons_typerep @ X212 @ X222 ) )
      = ( plus_plus_nat @ ( plus_plus_nat @ ( X4 @ X212 ) @ ( size_list_typerep @ X4 @ X222 ) ) @ ( suc @ zero_zero_nat ) ) ) ).

% list.size_gen(2)
thf(fact_187_length__Suc__conv,axiom,
    ! [Xs: list_typerep,N: nat] :
      ( ( ( size_s416147576yperep @ Xs )
        = ( suc @ N ) )
      = ( ? [Y4: typerep,Ys: list_typerep] :
            ( ( Xs
              = ( cons_typerep @ Y4 @ Ys ) )
            & ( ( size_s416147576yperep @ Ys )
              = N ) ) ) ) ).

% length_Suc_conv
thf(fact_188_Suc__length__conv,axiom,
    ! [N: nat,Xs: list_typerep] :
      ( ( ( suc @ N )
        = ( size_s416147576yperep @ Xs ) )
      = ( ? [Y4: typerep,Ys: list_typerep] :
            ( ( Xs
              = ( cons_typerep @ Y4 @ Ys ) )
            & ( ( size_s416147576yperep @ Ys )
              = N ) ) ) ) ).

% Suc_length_conv
thf(fact_189_length__Cons,axiom,
    ! [X4: typerep,Xs: list_typerep] :
      ( ( size_s416147576yperep @ ( cons_typerep @ X4 @ Xs ) )
      = ( suc @ ( size_s416147576yperep @ Xs ) ) ) ).

% length_Cons
thf(fact_190_list_Osize_I4_J,axiom,
    ! [X212: typerep,X222: list_typerep] :
      ( ( size_s416147576yperep @ ( cons_typerep @ X212 @ X222 ) )
      = ( plus_plus_nat @ ( size_s416147576yperep @ X222 ) @ ( suc @ zero_zero_nat ) ) ) ).

% list.size(4)
thf(fact_191_set__Cons__def,axiom,
    ( set_Co1954412371ar_int
    = ( ^ [A6: set_Pr1148378109ar_int,XS: set_li1762364675ar_int] :
          ( collec672902542ar_int
          @ ^ [Z: list_P1741976099ar_int] :
            ? [X: produc1260470173ar_int,Xs2: list_P1741976099ar_int] :
              ( ( Z
                = ( cons_P1254790739ar_int @ X @ Xs2 ) )
              & ( member92250950ar_int @ X @ A6 )
              & ( member2052091212ar_int @ Xs2 @ XS ) ) ) ) ) ).

% set_Cons_def
thf(fact_192_set__Cons__def,axiom,
    ( set_Cons_typerep
    = ( ^ [A6: set_typerep,XS: set_list_typerep] :
          ( collect_list_typerep
          @ ^ [Z: list_typerep] :
            ? [X: typerep,Xs2: list_typerep] :
              ( ( Z
                = ( cons_typerep @ X @ Xs2 ) )
              & ( member_typerep @ X @ A6 )
              & ( member_list_typerep @ Xs2 @ XS ) ) ) ) ) ).

% set_Cons_def
thf(fact_193_Cons__in__lex,axiom,
    ! [X4: typerep,Xs: list_typerep,Y: typerep,Ys2: list_typerep,R3: set_Pr1097818217yperep] :
      ( ( member1812711762yperep @ ( produc1695567329yperep @ ( cons_typerep @ X4 @ Xs ) @ ( cons_typerep @ Y @ Ys2 ) ) @ ( lex_typerep @ R3 ) )
      = ( ( ( member100911538yperep @ ( produc2071514689yperep @ X4 @ Y ) @ R3 )
          & ( ( size_s416147576yperep @ Xs )
            = ( size_s416147576yperep @ Ys2 ) ) )
        | ( ( X4 = Y )
          & ( member1812711762yperep @ ( produc1695567329yperep @ Xs @ Ys2 ) @ ( lex_typerep @ R3 ) ) ) ) ) ).

% Cons_in_lex
thf(fact_194_Cons__in__lex,axiom,
    ! [X4: nat,Xs: list_nat,Y: nat,Ys2: list_nat,R3: set_Pr1986765409at_nat] :
      ( ( member1926390090st_nat @ ( produc1625736153st_nat @ ( cons_nat @ X4 @ Xs ) @ ( cons_nat @ Y @ Ys2 ) ) @ ( lex_nat @ R3 ) )
      = ( ( ( member701585322at_nat @ ( product_Pair_nat_nat @ X4 @ Y ) @ R3 )
          & ( ( size_size_list_nat @ Xs )
            = ( size_size_list_nat @ Ys2 ) ) )
        | ( ( X4 = Y )
          & ( member1926390090st_nat @ ( produc1625736153st_nat @ Xs @ Ys2 ) @ ( lex_nat @ R3 ) ) ) ) ) ).

% Cons_in_lex
thf(fact_195_gen__length__code_I2_J,axiom,
    ! [N: nat,X4: typerep,Xs: list_typerep] :
      ( ( gen_length_typerep @ N @ ( cons_typerep @ X4 @ Xs ) )
      = ( gen_length_typerep @ ( suc @ N ) @ Xs ) ) ).

% gen_length_code(2)
thf(fact_196_lexord__cons__cons,axiom,
    ! [A: typerep,X4: list_typerep,B: typerep,Y: list_typerep,R3: set_Pr1097818217yperep] :
      ( ( member1812711762yperep @ ( produc1695567329yperep @ ( cons_typerep @ A @ X4 ) @ ( cons_typerep @ B @ Y ) ) @ ( lexord_typerep @ R3 ) )
      = ( ( member100911538yperep @ ( produc2071514689yperep @ A @ B ) @ R3 )
        | ( ( A = B )
          & ( member1812711762yperep @ ( produc1695567329yperep @ X4 @ Y ) @ ( lexord_typerep @ R3 ) ) ) ) ) ).

% lexord_cons_cons
thf(fact_197_lexord__cons__cons,axiom,
    ! [A: nat,X4: list_nat,B: nat,Y: list_nat,R3: set_Pr1986765409at_nat] :
      ( ( member1926390090st_nat @ ( produc1625736153st_nat @ ( cons_nat @ A @ X4 ) @ ( cons_nat @ B @ Y ) ) @ ( lexord_nat @ R3 ) )
      = ( ( member701585322at_nat @ ( product_Pair_nat_nat @ A @ B ) @ R3 )
        | ( ( A = B )
          & ( member1926390090st_nat @ ( produc1625736153st_nat @ X4 @ Y ) @ ( lexord_nat @ R3 ) ) ) ) ) ).

% lexord_cons_cons
thf(fact_198_lexord__irreflexive,axiom,
    ! [R3: set_Pr1986765409at_nat,Xs: list_nat] :
      ( ! [X3: nat] :
          ~ ( member701585322at_nat @ ( product_Pair_nat_nat @ X3 @ X3 ) @ R3 )
     => ~ ( member1926390090st_nat @ ( produc1625736153st_nat @ Xs @ Xs ) @ ( lexord_nat @ R3 ) ) ) ).

% lexord_irreflexive
thf(fact_199_lexord__linear,axiom,
    ! [R3: set_Pr1986765409at_nat,X4: list_nat,Y: list_nat] :
      ( ! [A3: nat,B3: nat] :
          ( ( member701585322at_nat @ ( product_Pair_nat_nat @ A3 @ B3 ) @ R3 )
          | ( A3 = B3 )
          | ( member701585322at_nat @ ( product_Pair_nat_nat @ B3 @ A3 ) @ R3 ) )
     => ( ( member1926390090st_nat @ ( produc1625736153st_nat @ X4 @ Y ) @ ( lexord_nat @ R3 ) )
        | ( X4 = Y )
        | ( member1926390090st_nat @ ( produc1625736153st_nat @ Y @ X4 ) @ ( lexord_nat @ R3 ) ) ) ) ).

% lexord_linear
thf(fact_200_Shift__def,axiom,
    ( bNF_Gr457912949yperep
    = ( ^ [Kl: set_list_typerep,K2: typerep] :
          ( collect_list_typerep
          @ ^ [Kl2: list_typerep] : ( member_list_typerep @ ( cons_typerep @ K2 @ Kl2 ) @ Kl ) ) ) ) ).

% Shift_def
thf(fact_201_ShiftD,axiom,
    ! [Kl3: list_typerep,Kl4: set_list_typerep,K: typerep] :
      ( ( member_list_typerep @ Kl3 @ ( bNF_Gr457912949yperep @ Kl4 @ K ) )
     => ( member_list_typerep @ ( cons_typerep @ K @ Kl3 ) @ Kl4 ) ) ).

% ShiftD
thf(fact_202_Succ__Shift,axiom,
    ! [Kl4: set_list_typerep,K: typerep,Kl3: list_typerep] :
      ( ( bNF_Gr1303086585yperep @ ( bNF_Gr457912949yperep @ Kl4 @ K ) @ Kl3 )
      = ( bNF_Gr1303086585yperep @ Kl4 @ ( cons_typerep @ K @ Kl3 ) ) ) ).

% Succ_Shift
thf(fact_203_Cons__listrel1__Cons,axiom,
    ! [X4: typerep,Xs: list_typerep,Y: typerep,Ys2: list_typerep,R3: set_Pr1097818217yperep] :
      ( ( member1812711762yperep @ ( produc1695567329yperep @ ( cons_typerep @ X4 @ Xs ) @ ( cons_typerep @ Y @ Ys2 ) ) @ ( listrel1_typerep @ R3 ) )
      = ( ( ( member100911538yperep @ ( produc2071514689yperep @ X4 @ Y ) @ R3 )
          & ( Xs = Ys2 ) )
        | ( ( X4 = Y )
          & ( member1812711762yperep @ ( produc1695567329yperep @ Xs @ Ys2 ) @ ( listrel1_typerep @ R3 ) ) ) ) ) ).

% Cons_listrel1_Cons
thf(fact_204_Cons__listrel1__Cons,axiom,
    ! [X4: nat,Xs: list_nat,Y: nat,Ys2: list_nat,R3: set_Pr1986765409at_nat] :
      ( ( member1926390090st_nat @ ( produc1625736153st_nat @ ( cons_nat @ X4 @ Xs ) @ ( cons_nat @ Y @ Ys2 ) ) @ ( listrel1_nat @ R3 ) )
      = ( ( ( member701585322at_nat @ ( product_Pair_nat_nat @ X4 @ Y ) @ R3 )
          & ( Xs = Ys2 ) )
        | ( ( X4 = Y )
          & ( member1926390090st_nat @ ( produc1625736153st_nat @ Xs @ Ys2 ) @ ( listrel1_nat @ R3 ) ) ) ) ) ).

% Cons_listrel1_Cons
thf(fact_205_listrel1I1,axiom,
    ! [X4: typerep,Y: typerep,R3: set_Pr1097818217yperep,Xs: list_typerep] :
      ( ( member100911538yperep @ ( produc2071514689yperep @ X4 @ Y ) @ R3 )
     => ( member1812711762yperep @ ( produc1695567329yperep @ ( cons_typerep @ X4 @ Xs ) @ ( cons_typerep @ Y @ Xs ) ) @ ( listrel1_typerep @ R3 ) ) ) ).

% listrel1I1
thf(fact_206_listrel1I1,axiom,
    ! [X4: nat,Y: nat,R3: set_Pr1986765409at_nat,Xs: list_nat] :
      ( ( member701585322at_nat @ ( product_Pair_nat_nat @ X4 @ Y ) @ R3 )
     => ( member1926390090st_nat @ ( produc1625736153st_nat @ ( cons_nat @ X4 @ Xs ) @ ( cons_nat @ Y @ Xs ) ) @ ( listrel1_nat @ R3 ) ) ) ).

% listrel1I1
thf(fact_207_Cons__listrel1E1,axiom,
    ! [X4: typerep,Xs: list_typerep,Ys2: list_typerep,R3: set_Pr1097818217yperep] :
      ( ( member1812711762yperep @ ( produc1695567329yperep @ ( cons_typerep @ X4 @ Xs ) @ Ys2 ) @ ( listrel1_typerep @ R3 ) )
     => ( ! [Y3: typerep] :
            ( ( Ys2
              = ( cons_typerep @ Y3 @ Xs ) )
           => ~ ( member100911538yperep @ ( produc2071514689yperep @ X4 @ Y3 ) @ R3 ) )
       => ~ ! [Zs: list_typerep] :
              ( ( Ys2
                = ( cons_typerep @ X4 @ Zs ) )
             => ~ ( member1812711762yperep @ ( produc1695567329yperep @ Xs @ Zs ) @ ( listrel1_typerep @ R3 ) ) ) ) ) ).

% Cons_listrel1E1
thf(fact_208_Cons__listrel1E1,axiom,
    ! [X4: nat,Xs: list_nat,Ys2: list_nat,R3: set_Pr1986765409at_nat] :
      ( ( member1926390090st_nat @ ( produc1625736153st_nat @ ( cons_nat @ X4 @ Xs ) @ Ys2 ) @ ( listrel1_nat @ R3 ) )
     => ( ! [Y3: nat] :
            ( ( Ys2
              = ( cons_nat @ Y3 @ Xs ) )
           => ~ ( member701585322at_nat @ ( product_Pair_nat_nat @ X4 @ Y3 ) @ R3 ) )
       => ~ ! [Zs: list_nat] :
              ( ( Ys2
                = ( cons_nat @ X4 @ Zs ) )
             => ~ ( member1926390090st_nat @ ( produc1625736153st_nat @ Xs @ Zs ) @ ( listrel1_nat @ R3 ) ) ) ) ) ).

% Cons_listrel1E1
thf(fact_209_Cons__listrel1E2,axiom,
    ! [Xs: list_typerep,Y: typerep,Ys2: list_typerep,R3: set_Pr1097818217yperep] :
      ( ( member1812711762yperep @ ( produc1695567329yperep @ Xs @ ( cons_typerep @ Y @ Ys2 ) ) @ ( listrel1_typerep @ R3 ) )
     => ( ! [X3: typerep] :
            ( ( Xs
              = ( cons_typerep @ X3 @ Ys2 ) )
           => ~ ( member100911538yperep @ ( produc2071514689yperep @ X3 @ Y ) @ R3 ) )
       => ~ ! [Zs: list_typerep] :
              ( ( Xs
                = ( cons_typerep @ Y @ Zs ) )
             => ~ ( member1812711762yperep @ ( produc1695567329yperep @ Zs @ Ys2 ) @ ( listrel1_typerep @ R3 ) ) ) ) ) ).

% Cons_listrel1E2
thf(fact_210_Cons__listrel1E2,axiom,
    ! [Xs: list_nat,Y: nat,Ys2: list_nat,R3: set_Pr1986765409at_nat] :
      ( ( member1926390090st_nat @ ( produc1625736153st_nat @ Xs @ ( cons_nat @ Y @ Ys2 ) ) @ ( listrel1_nat @ R3 ) )
     => ( ! [X3: nat] :
            ( ( Xs
              = ( cons_nat @ X3 @ Ys2 ) )
           => ~ ( member701585322at_nat @ ( product_Pair_nat_nat @ X3 @ Y ) @ R3 ) )
       => ~ ! [Zs: list_nat] :
              ( ( Xs
                = ( cons_nat @ Y @ Zs ) )
             => ~ ( member1926390090st_nat @ ( produc1625736153st_nat @ Zs @ Ys2 ) @ ( listrel1_nat @ R3 ) ) ) ) ) ).

% Cons_listrel1E2
thf(fact_211_lexord__append__left__rightI,axiom,
    ! [A: typerep,B: typerep,R3: set_Pr1097818217yperep,U: list_typerep,X4: list_typerep,Y: list_typerep] :
      ( ( member100911538yperep @ ( produc2071514689yperep @ A @ B ) @ R3 )
     => ( member1812711762yperep @ ( produc1695567329yperep @ ( append_typerep @ U @ ( cons_typerep @ A @ X4 ) ) @ ( append_typerep @ U @ ( cons_typerep @ B @ Y ) ) ) @ ( lexord_typerep @ R3 ) ) ) ).

% lexord_append_left_rightI
thf(fact_212_lexord__append__left__rightI,axiom,
    ! [A: nat,B: nat,R3: set_Pr1986765409at_nat,U: list_nat,X4: list_nat,Y: list_nat] :
      ( ( member701585322at_nat @ ( product_Pair_nat_nat @ A @ B ) @ R3 )
     => ( member1926390090st_nat @ ( produc1625736153st_nat @ ( append_nat @ U @ ( cons_nat @ A @ X4 ) ) @ ( append_nat @ U @ ( cons_nat @ B @ Y ) ) ) @ ( lexord_nat @ R3 ) ) ) ).

% lexord_append_left_rightI
thf(fact_213_listrel1I,axiom,
    ! [X4: typerep,Y: typerep,R3: set_Pr1097818217yperep,Xs: list_typerep,Us: list_typerep,Vs: list_typerep,Ys2: list_typerep] :
      ( ( member100911538yperep @ ( produc2071514689yperep @ X4 @ Y ) @ R3 )
     => ( ( Xs
          = ( append_typerep @ Us @ ( cons_typerep @ X4 @ Vs ) ) )
       => ( ( Ys2
            = ( append_typerep @ Us @ ( cons_typerep @ Y @ Vs ) ) )
         => ( member1812711762yperep @ ( produc1695567329yperep @ Xs @ Ys2 ) @ ( listrel1_typerep @ R3 ) ) ) ) ) ).

% listrel1I
thf(fact_214_listrel1I,axiom,
    ! [X4: nat,Y: nat,R3: set_Pr1986765409at_nat,Xs: list_nat,Us: list_nat,Vs: list_nat,Ys2: list_nat] :
      ( ( member701585322at_nat @ ( product_Pair_nat_nat @ X4 @ Y ) @ R3 )
     => ( ( Xs
          = ( append_nat @ Us @ ( cons_nat @ X4 @ Vs ) ) )
       => ( ( Ys2
            = ( append_nat @ Us @ ( cons_nat @ Y @ Vs ) ) )
         => ( member1926390090st_nat @ ( produc1625736153st_nat @ Xs @ Ys2 ) @ ( listrel1_nat @ R3 ) ) ) ) ) ).

% listrel1I
thf(fact_215_append__eq__append__conv,axiom,
    ! [Xs: list_typerep,Ys2: list_typerep,Us: list_typerep,Vs: list_typerep] :
      ( ( ( ( size_s416147576yperep @ Xs )
          = ( size_s416147576yperep @ Ys2 ) )
        | ( ( size_s416147576yperep @ Us )
          = ( size_s416147576yperep @ Vs ) ) )
     => ( ( ( append_typerep @ Xs @ Us )
          = ( append_typerep @ Ys2 @ Vs ) )
        = ( ( Xs = Ys2 )
          & ( Us = Vs ) ) ) ) ).

% append_eq_append_conv
thf(fact_216_length__append,axiom,
    ! [Xs: list_typerep,Ys2: list_typerep] :
      ( ( size_s416147576yperep @ ( append_typerep @ Xs @ Ys2 ) )
      = ( plus_plus_nat @ ( size_s416147576yperep @ Xs ) @ ( size_s416147576yperep @ Ys2 ) ) ) ).

% length_append
thf(fact_217_size__list__append,axiom,
    ! [F2: typerep > nat,Xs: list_typerep,Ys2: list_typerep] :
      ( ( size_list_typerep @ F2 @ ( append_typerep @ Xs @ Ys2 ) )
      = ( plus_plus_nat @ ( size_list_typerep @ F2 @ Xs ) @ ( size_list_typerep @ F2 @ Ys2 ) ) ) ).

% size_list_append
thf(fact_218_lexord__sufE,axiom,
    ! [Xs: list_typerep,Zs2: list_typerep,Ys2: list_typerep,Qs: list_typerep,R3: set_Pr1097818217yperep] :
      ( ( member1812711762yperep @ ( produc1695567329yperep @ ( append_typerep @ Xs @ Zs2 ) @ ( append_typerep @ Ys2 @ Qs ) ) @ ( lexord_typerep @ R3 ) )
     => ( ( Xs != Ys2 )
       => ( ( ( size_s416147576yperep @ Xs )
            = ( size_s416147576yperep @ Ys2 ) )
         => ( ( ( size_s416147576yperep @ Zs2 )
              = ( size_s416147576yperep @ Qs ) )
           => ( member1812711762yperep @ ( produc1695567329yperep @ Xs @ Ys2 ) @ ( lexord_typerep @ R3 ) ) ) ) ) ) ).

% lexord_sufE
thf(fact_219_lex__append__leftD,axiom,
    ! [R3: set_Pr1097818217yperep,Xs: list_typerep,Ys2: list_typerep,Zs2: list_typerep] :
      ( ! [X3: typerep] :
          ~ ( member100911538yperep @ ( produc2071514689yperep @ X3 @ X3 ) @ R3 )
     => ( ( member1812711762yperep @ ( produc1695567329yperep @ ( append_typerep @ Xs @ Ys2 ) @ ( append_typerep @ Xs @ Zs2 ) ) @ ( lex_typerep @ R3 ) )
       => ( member1812711762yperep @ ( produc1695567329yperep @ Ys2 @ Zs2 ) @ ( lex_typerep @ R3 ) ) ) ) ).

% lex_append_leftD
thf(fact_220_lex__append__leftD,axiom,
    ! [R3: set_Pr1986765409at_nat,Xs: list_nat,Ys2: list_nat,Zs2: list_nat] :
      ( ! [X3: nat] :
          ~ ( member701585322at_nat @ ( product_Pair_nat_nat @ X3 @ X3 ) @ R3 )
     => ( ( member1926390090st_nat @ ( produc1625736153st_nat @ ( append_nat @ Xs @ Ys2 ) @ ( append_nat @ Xs @ Zs2 ) ) @ ( lex_nat @ R3 ) )
       => ( member1926390090st_nat @ ( produc1625736153st_nat @ Ys2 @ Zs2 ) @ ( lex_nat @ R3 ) ) ) ) ).

% lex_append_leftD

% Conjectures (1)
thf(conj_0,conjecture,
    ? [S6: list_char > int,S8: list_char > int] :
      ( ( relati23543761ar_int @ p @ b @ c @ ( suc @ ka ) @ S6 @ S8 )
      & ( bval @ b @ S6 )
      & ( big_big_step @ ( produc1193801173ar_int @ c @ S6 ) @ ta )
      & ( big_big_step @ ( produc1193801173ar_int @ c2 @ S8 ) @ t_a ) ) ).

%------------------------------------------------------------------------------